No-Code Handoff Link
The handoff link normally comes from the Generate a marketplace handoff URL API call. If you'd rather not integrate with the API at all, you can build the link yourself as a plain URL with query parameters and drop it into an email, SMS, or web page. The action is still attributed to you.
The trade-off: because anyone can read or edit a URL, we can't trust an identity that's baked into it. So the no-code link verifies the user at open (Google or phone) instead of trusting an email/phone from the query string. Everything else — vehicle, address, theme, attribution — is carried as enrichment.
- API /
tok_link (generate-link) — you make one authenticated call, we mint a one-timetok_…link, and the user is signed in automatically (no login screen). Use this when you can make a server-to-server call. - No-code link (this page) — you build a URL with no integration. The user verifies identity once at open. Use this when you can't or don't want to call the API.
The URL
Point the user at the Ownli-hosted handoff page with your parameters:
https://marketplace.partner.sandbox.ownli.app/marketplace/handoff
?ownli_partner=sparkle
&ownli_category=insurance
&utm_source=sparkle&utm_medium=email&utm_campaign=spring_wash
&ownli_first_name=Jane&ownli_last_name=Doe&ownli_external_id=cust_8842
&ownli_address_line1=123%20Main%20St&ownli_address_city=Miami&ownli_address_state=FL&ownli_address_zip=33101
&ownli_vin=1HGCM82633A123456
&ownli_theme_name=Sparkle%20Car%20Wash&ownli_theme_primary_color=%231A2B3C
&ownli_mode=embedded
Only ownli_partner and ownli_category are required; everything else is optional. Always
URL-encode values (spaces → %20, # → %23, + in a phone → %2B).
There is intentionally no ownli_email / ownli_phone parameter. A URL is unauthenticated
and user-editable — trusting an identity from it would let anyone sign in as anyone (account
takeover), and it would leak personal data into browser history, logs, and referrer headers.
Identity is established by the verification step at open. If you want us to trust an identity you
already hold, use the authenticated API link instead.
Parameters
Required
| Parameter | Description |
|---|---|
ownli_partner | Your marketplace slug (the MarketplaceSlug of your Ownli DataBuyer). Identifies you as the contributor and supplies your stored brand theme defaults. An unknown slug is rejected. |
ownli_category | Marketplace category slug — the same value the API path takes as categorySlug (e.g. insurance). Drives which vendor flow runs. An unknown category is rejected. |
User enrichment (optional)
| Parameter | Description |
|---|---|
ownli_first_name | End-user first name. |
ownli_last_name | End-user last name. |
ownli_external_id | Your own id for this user. Stored as-is for your reference; never used to resolve or authenticate the Ownli user. |
ownli_address_line1 | Street address line 1. |
ownli_address_line2 | Street address line 2. |
ownli_address_city | City. |
ownli_address_state | 2-letter US state code. Required if any address field is supplied. |
ownli_address_zip | ZIP / postal code. |
Vehicle (optional)
| Parameter | Description |
|---|---|
ownli_vin | Vehicle VIN (preferred). Year/make/model are decoded automatically when possible. |
ownli_plate | License plate (fallback when no VIN). |
ownli_plate_state | 2-letter state for the plate. Required with ownli_plate. |
Branding (optional)
Each value overrides your DataBuyer theme default for this link only.
| Parameter | Description |
|---|---|
ownli_theme_name | Brand display name shown in the standalone header. |
ownli_theme_logo | Brand logo URL (https only). |
ownli_theme_primary_color | Primary color (hex, e.g. #1A2B3C). |
ownli_theme_secondary_color | Secondary color (hex). |
ownli_theme_accent_color | Accent color (hex). |
ownli_theme_font_family | Font family token (e.g. Inter, sans-serif). |
ownli_theme_radius | Corner radius token (e.g. 8px). |
Non-hex colors and malformed values are ignored server-side.
Presentation (optional)
| Parameter | Description |
|---|---|
ownli_mode | embedded (chromeless, for display inside your own app) or standalone (brand header). Omit to auto-detect (iframe → embedded). |
Attribution (optional)
Free-text analytics tags, stored on the handoff record. Never used for identity or to resolve the contributing partner.
| Parameter | Description |
|---|---|
utm_source | Marketing source. |
utm_medium | Marketing medium. |
utm_campaign | Campaign name. |
What happens at open
- Verify identity. The user signs in with Google or a phone code. The verified identity is the source of truth for the Ownli user — the URL never asserts who they are. A returning user with an existing session sees a one-tap "Continue as …" (with an option to switch accounts) instead of logging in again.
- Resolve & attribute. We resolve your
ownli_partnerto your DataBuyer, validateownli_category, and find-or-create the Ownli user from the verified identity, attributed to you. Vehicle and address enrichment are attached. - Theme. Your DataBuyer theme is applied, with any per-link
ownli_theme_*values layered on top.ownli_modecontrols whether the brand header shows. - Continue to the flow. The user lands in the same vendor flow the API/
tok_link uses.
Errors
| Condition | Result |
|---|---|
ownli_partner missing or unknown | The link won't proceed — the partner can't be resolved. |
ownli_category missing or unknown | The link won't proceed — CATEGORY_NOT_FOUND. |
| User abandons verification | No Ownli user is created and nothing is attributed. |