This guide is for developers who put creator links on a website, in an app, or in any other surface a creator controls.
This guide is for developers who put creator links on a website, in an app, or in any other surface a creator controls. It explains where a link comes from, what it does when clicked, and how to place it without breaking tracking.
There is no JavaScript ad widget any more. Earlier versions of the platform shipped an embeddable ad widget, publisher embed tokens (uam_pub_embed_...), UAM.init(), UAM.recordMovement() and /track/* endpoints. All of these were retired along with the separate ad service. If you have that snippet on a page, remove it; it no longer loads. Today a creator integrates with links.
Every creator in a campaign has one personal link per campaign. It points at the platform’s public redirect:
https://<platform host>/go/<17-character code>
The code is an opaque, case-insensitive share code with a built-in check character, so most typos are rejected rather than credited to someone else. It does not reveal the campaign id or the creator’s account. An older long form, /go/<campaignId>/<creator address>, still resolves for links shared in the past, but new links use the short form.When a shopper opens the link, the platform:
records a click and mints a click id (clk_<uuid>);
optionally allocates a single-use discount code for that click, if the brand enabled codes for the campaign;
responds with a 302 redirect to the brand’s product page, with tracking parameters added:
On Shopify stores, the brand’s theme app embed then stores the click in the shopper’s cart so it survives to checkout. Nothing else is needed on the creator’s side. How the click is later matched to an order is covered in Attribution engine.
Creators copy their link from the Freeq Growth Network app. To fetch it programmatically on the creator’s behalf, call the application API with the creator’s Clerk session token:
GET /api/campaigns/{campaignId}/my-publisher/share-linkAuthorization: Bearer <creator session token>
Use shareLink exactly as returned. destinationUrl is for display (“you will be sending shoppers to…”); never link to it directly, because a direct link records no click and earns nothing. The campaign’s brand can fetch a member creator’s link with GET /api/campaigns/{campaignId}/publishers/{publisherId}/share-link. Links are issued only while the campaign is accepting traffic (not in draft, not ended).Partners that provision creators server to server receive the share link in the provisioning response instead. See Commerce providers.
A creator link is an ordinary URL. Put it in a normal anchor:
<a href="https://<platform host>/go/<code>" rel="sponsored noopener" target="_blank"> Shop the widget</a>
Rules that keep tracking intact:
Use the link unmodified. Do not rebuild the destination URL yourself, and do not strip or rewrite query parameters on the way to the store.
Let redirects run. If you route clicks through your own shortener or click tracker, it must follow through to the creator link with a normal redirect, and the platform’s 302 must reach the shopper’s browser with its query string intact.
Do not prefetch. Each request to the link records a click. Link checkers, prefetching or server-side “preview” fetches create clicks that never reach a shopper.
Do not publish the discount code. Codes shaped UAM-XXXX-XXXX-XXXX are minted per click and expire after a short time. They are applied automatically through the link. Sharing one by hand ties every buyer to one old click.
Disclose. Label affiliate links as required where you publish. rel="sponsored" is the conventional marker for search engines.
Other query parameters on the /go link are ignored, with one exception below.
to must be a relative path on the store’s own domain, inside the store’s allowlist of path prefixes. Anything else (absolute URLs, other domains, encoded characters, query strings or fragments in to) is ignored and the shopper lands on the campaign default. The click is recorded either way.
Open the link in the system browser or an in-app browser so the redirect and the store’s cart script run normally. Do not resolve the redirect in your app and hand the shopper only the final URL; that works once but loses the per-click discount when codes are in use.
The Location header should point at the brand’s page with uam_click=clk_... in the query string, or at the store’s discount URL that redirects there. Remember this records a click.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"The Freeq Growth Network","colors":{"primary":"#7039d1","light":"#8b5cf6","dark":"#5b2fb8"},"logo":{"light":"https://mintcdn.com/higher-frequency/PvZcrMJVPdKMKXUb/logo/mark-light.svg?fit=max\u0026auto=format\u0026n=PvZcrMJVPdKMKXUb\u0026q=85\u0026s=a6139290f1785b6a50bbf60022c287ea","dark":"https://mintcdn.com/higher-frequency/PvZcrMJVPdKMKXUb/logo/mark-dark.svg?fit=max\u0026auto=format\u0026n=PvZcrMJVPdKMKXUb\u0026q=85\u0026s=4c370d725dab15a7f61f0d46e70fd4d4"},"favicon":"https://mintcdn.com/higher-frequency/sOD_W8gwY0iQ99e2/favicon.png?fit=max\u0026auto=format\u0026n=sOD_W8gwY0iQ99e2\u0026q=85\u0026s=9e55570f6758e6cb06a3a5fde9ede0c0","appearance":{"default":"system","strict":false},"navbar":{"links":[]},"footer":{"socials":{}},"fonts":{"family":"Inter"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"higher-frequency","hasAudioNarration":false,"actualSubdomain":"higher-frequency","customDomains":["docs.higherfrequency.io"],"gitSource":{"type":"github","owner":"frequencyadvisors","repo":"affiliate-project","deployBranch":"main","contentDirectory":"docs-site","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6aee1b691358265f252895ad","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"Guides","count":22},{"language":"default","tag":"Developers \u0026 partners","count":9},{"language":"default","tag":"Developer \u0026 partner docs","count":9},{"language":"default","tag":"Brands","count":7},{"language":"default","tag":"Creators","count":5},{"language":"default","tag":"Getting started","count":4},{"language":"default","tag":"How it works","count":4},{"language":"default","tag":"Reference","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"developers/publisher-embed-guide","slug":"/developers/publisher-embed-guide","pageMetadata":{"title":"Publisher embed guide","description":"This guide is for developers who put creator links on a website, in an app, or in any other surface a creator controls.","href":"/developers/publisher-embed-guide"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"This guide is for developers who put creator links on a website, in an app, or in any other surface a creator controls.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`This guide is for developers who put creator links on a website, in an app, or in any other surface a creator controls. It explains where a link comes from, what it does when clicked, and how to place it without breaking tracking.`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`There is no JavaScript ad widget any more.`}),` Earlier versions of the platform shipped an embeddable ad widget, publisher embed tokens (`,_jsx(_components.code,{children:`uam_pub_embed_...`}),`), `,_jsx(_components.code,{children:`UAM.init()`}),`, `,_jsx(_components.code,{children:`UAM.recordMovement()`}),` and `,_jsx(_components.code,{children:`/track/*`}),` endpoints. All of these were retired along with the separate ad service. If you have that snippet on a page, remove it; it no longer loads. Today a creator integrates with `,_jsx(_components.strong,{children:`links`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`what-a-creator-link-is`,children:`What a creator link is`}),`\n`,_jsx(_components.p,{children:`Every creator in a campaign has one personal link per campaign. It points at the platform’s public redirect:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://\u003cplatform host>/go/\u003c17-character code>`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`The code is an opaque, case-insensitive share code with a built-in check character, so most typos are rejected rather than credited to someone else. It does not reveal the campaign id or the creator’s account. An older long form, `,_jsx(_components.code,{children:`/go/\u003ccampaignId>/\u003ccreator address>`}),`, still resolves for links shared in the past, but new links use the short form.`]}),`\n`,_jsx(_components.p,{children:`When a shopper opens the link, the platform:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`records a click and mints a click id (`,_jsx(_components.code,{children:`clk_\u003cuuid>`}),`);`]}),`\n`,_jsx(_components.li,{children:`optionally allocates a single-use discount code for that click, if the brand enabled codes for the campaign;`}),`\n`,_jsxs(_components.li,{children:[`responds with a `,_jsx(_components.code,{children:`302`}),` redirect to the brand’s product page, with tracking parameters added:`]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://brand-store.example/products/widget`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ?uam_click=clk_550e8400-e29b-41d4-a716-446655440000`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \u0026utm_source=uam\u0026utm_medium=affiliate`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \u0026utm_term=clk_550e8400-e29b-41d4-a716-446655440000`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`On Shopify stores, the brand’s theme app embed then stores the click in the shopper’s cart so it survives to checkout. Nothing else is needed on the creator’s side. How the click is later matched to an order is covered in `,_jsx(_components.a,{href:`/developers/attribution-engine`,children:`Attribution engine`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`getting-a-creator’s-link`,children:`Getting a creator’s link`}),`\n`,_jsx(_components.p,{children:`Creators copy their link from the Freeq Growth Network app. To fetch it programmatically on the creator’s behalf, call the application API with the creator’s Clerk session token:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`http`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`http`,children:_jsxs(_components.code,{language:`http`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`GET`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` /api/campaigns/{campaignId}/my-publisher/share-link`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Authorization`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` Bearer \u003ccreator session token>`})]}),`\n`]})})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"shareLink\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://\u003cplatform host>/go/\u003ccode>\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"campaignId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"campaign_550e8400-e29b-41d4-a716-446655440000\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"publisherId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"9b4c2d8e-1234-5678-9abc-def012345678\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"publisherWalletAddress\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"0x1234567890abcdef1234567890abcdef12345678\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"campaignTitle\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Spring launch\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"destinationUrl\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://brand-store.example/products/widget\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Use `,_jsx(_components.code,{children:`shareLink`}),` exactly as returned. `,_jsx(_components.code,{children:`destinationUrl`}),` is for display (“you will be sending shoppers to…”); never link to it directly, because a direct link records no click and earns nothing. The campaign’s brand can fetch a member creator’s link with `,_jsx(_components.code,{children:`GET /api/campaigns/{campaignId}/publishers/{publisherId}/share-link`}),`. Links are issued only while the campaign is accepting traffic (not in draft, not ended).`]}),`\n`,_jsxs(_components.p,{children:[`Partners that provision creators server to server receive the share link in the provisioning response instead. See `,_jsx(_components.a,{href:`/developers/commerce-providers#partner-marketplace-partner-wire`,children:`Commerce providers`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`placing-links`,children:`Placing links`}),`\n`,_jsx(_components.p,{children:`A creator link is an ordinary URL. Put it in a normal anchor:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`html`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`html`,children:_jsxs(_components.code,{language:`html`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`a`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` href`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://`}),_jsx(_components.span,{style:{color:`#82071E`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#F44747`,\"--shiki-dark-font-style\":`inherit`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`platform host>/go/`}),_jsx(_components.span,{style:{color:`#82071E`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#F44747`,\"--shiki-dark-font-style\":`inherit`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`code>\"`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` rel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"sponsored noopener\"`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` target`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"_blank\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Shop the widget`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`a`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Rules that keep tracking intact:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Use the link unmodified.`}),` Do not rebuild the destination URL yourself, and do not strip or rewrite query parameters on the way to the store.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Let redirects run.`}),` If you route clicks through your own shortener or click tracker, it must follow through to the creator link with a normal redirect, and the platform’s `,_jsx(_components.code,{children:`302`}),` must reach the shopper’s browser with its query string intact.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Do not prefetch.`}),` Each request to the link records a click. Link checkers, prefetching or server-side “preview” fetches create clicks that never reach a shopper.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Do not publish the discount code.`}),` Codes shaped `,_jsx(_components.code,{children:`UAM-XXXX-XXXX-XXXX`}),` are minted per click and expire after a short time. They are applied automatically through the link. Sharing one by hand ties every buyer to one old click.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Disclose.`}),` Label affiliate links as required where you publish. `,_jsx(_components.code,{children:`rel=\"sponsored\"`}),` is the conventional marker for search engines.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Other query parameters on the `,_jsx(_components.code,{children:`/go`}),` link are ignored, with one exception below.`]}),`\n`,_jsx(Heading,{level:`3`,id:`landing-on-a-specific-page`,children:`Landing on a specific page`}),`\n`,_jsx(_components.p,{children:`Some partner stores let a link land on a page other than the campaign default:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://\u003cplatform host>/go/\u003ccode>?to=/\u003callowed-prefix>/spring-collection`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`to`}),` must be a relative path on the store’s own domain, inside the store’s allowlist of path prefixes. Anything else (absolute URLs, other domains, encoded characters, query strings or fragments in `,_jsx(_components.code,{children:`to`}),`) is ignored and the shopper lands on the campaign default. The click is recorded either way.`]}),`\n`,_jsx(Heading,{level:`3`,id:`in-mobile-apps`,children:`In mobile apps`}),`\n`,_jsx(_components.p,{children:`Open the link in the system browser or an in-app browser so the redirect and the store’s cart script run normally. Do not resolve the redirect in your app and hand the shopper only the final URL; that works once but loses the per-click discount when codes are in use.`}),`\n`,_jsx(Heading,{level:`2`,id:`checking-a-link`,children:`Checking a link`}),`\n`,_jsx(_components.p,{children:`You can inspect a link without a browser:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` -s -o /dev/null -D - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://\u003cplatform host>/go/\u003ccode>\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` | grep -i `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'^location'`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`Location`}),` header should point at the brand’s page with `,_jsx(_components.code,{children:`uam_click=clk_...`}),` in the query string, or at the store’s discount URL that redirects there. Remember this records a click.`]}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Symptom`}),_jsx(_components.th,{children:`Likely cause`}),_jsx(_components.th,{children:`What to do`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`404 Unknown share code`})}),_jsx(_components.td,{children:`Code mistyped, truncated, or the campaign or creator link no longer exists`}),_jsx(_components.td,{children:`Copy the link again from the app or the API.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Store page opens without `,_jsx(_components.code,{children:`uam_click`})]}),_jsx(_components.td,{children:`Something between the link and the store rewrote the URL`}),_jsx(_components.td,{children:`Remove the intermediate redirect or make it pass the query string through.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`URL ends with `,_jsx(_components.code,{children:`uam_coupon=unavailable`})]}),_jsx(_components.td,{children:`The brand’s code pool or budget is used up, or the campaign has ended`}),_jsx(_components.td,{children:`The click still counts. Tell the brand if this persists.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`A sale was not credited`}),_jsx(_components.td,{children:`Usually a newer click from another creator, a product outside the campaign, or a returning customer`}),_jsxs(_components.td,{children:[`Check the order’s reason code; see `,_jsx(_components.a,{href:`/developers/attribution-engine#8-order-outcomes-and-reasons`,children:`Attribution engine`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Snippet with `,_jsx(_components.code,{children:`UAM.init`}),` does nothing`]}),_jsx(_components.td,{children:`The retired widget`}),_jsx(_components.td,{children:`Replace it with plain links.`})]})]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Publisher embed guide","description":"This guide is for developers who put creator links on a website, in an app, or in any other surface a creator controls.","href":"/developers/publisher-embed-guide"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"What a creator link is","slug":"what-a-creator-link-is","depth":2,"children":[]},{"title":"Getting a creator’s link","slug":"getting-a-creator’s-link","depth":2,"children":[]},{"title":"Placing links","slug":"placing-links","depth":2,"children":[{"title":"Landing on a specific page","slug":"landing-on-a-specific-page","depth":3,"children":[]},{"title":"In mobile apps","slug":"in-mobile-apps","depth":3,"children":[]}]},{"title":"Checking a link","slug":"checking-a-link","depth":2,"children":[]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"higher-frequency","siteName":"The Freeq Growth Network","title":"Publisher embed guide - The Freeq Growth Network","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-27T16:50:44.277Z","originalFileLocation":"developers/publisher-embed-guide.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"This guide is for developers who put creator links on a website, in an app, or in any other surface a creator controls.\">\u003cmeta data-mint-head name=\"application-name\" content=\"The Freeq Growth Network\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/higher-frequency/_Fw6L2w-IVBQ4vMA/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/higher-frequency/_Fw6L2w-IVBQ4vMA/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/higher-frequency/_Fw6L2w-IVBQ4vMA/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/higher-frequency/_Fw6L2w-IVBQ4vMA/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/higher-frequency/_Fw6L2w-IVBQ4vMA/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/higher-frequency/_Fw6L2w-IVBQ4vMA/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/higher-frequency/_Fw6L2w-IVBQ4vMA/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/higher-frequency/_Fw6L2w-IVBQ4vMA/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/higher-frequency/_Fw6L2w-IVBQ4vMA/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Publisher embed guide - The Freeq Growth Network\">\u003cmeta data-mint-head property=\"og:description\" content=\"This guide is for developers who put creator links on a website, in an app, or in any other surface a creator controls.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"The Freeq Growth Network\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.higherfrequency.io/developers/publisher-embed-guide\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://higher-frequency.mintlify.site/_mintlify/api/og/v2?division=Developer+%26+partner+docs\u0026amp;title=Publisher+embed+guide\u0026amp;description=This+guide+is+for+developers+who+put+creator+links+on+a+website%2C+in+an+app%2C+or+in+any+other+surface+a+creator+controls.\u0026amp;theme=f8c4450dced3c4ff572bf8c3\u0026amp;signature=88c0fbc29527560626e43bc194ad88ea26cd0c78dd66508edd3652806af58a89\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Publisher embed guide - The Freeq Growth Network\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"This guide is for developers who put creator links on a website, in an app, or in any other surface a creator controls.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://higher-frequency.mintlify.site/_mintlify/api/og/v2?division=Developer+%26+partner+docs\u0026amp;title=Publisher+embed+guide\u0026amp;description=This+guide+is+for+developers+who+put+creator+links+on+a+website%2C+in+an+app%2C+or+in+any+other+surface+a+creator+controls.\u0026amp;theme=f8c4450dced3c4ff572bf8c3\u0026amp;signature=88c0fbc29527560626e43bc194ad88ea26cd0c78dd66508edd3652806af58a89\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/higher-frequency/_Fw6L2w-IVBQ4vMA/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"The Freeq Growth Network\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#7039d1\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.higherfrequency.io/developers/publisher-embed-guide\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/developers/publisher-embed-guide.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.higherfrequency.io/#organization\",\"name\":\"The Freeq Growth Network\",\"url\":\"https://docs.higherfrequency.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/higher-frequency/PvZcrMJVPdKMKXUb/logo/mark-light.svg?fit=max\u0026auto=format\u0026n=PvZcrMJVPdKMKXUb\u0026q=85\u0026s=a6139290f1785b6a50bbf60022c287ea\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.higherfrequency.io#website\",\"name\":\"The Freeq Growth Network\",\"url\":\"https://docs.higherfrequency.io\",\"publisher\":{\"@id\":\"https://docs.higherfrequency.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.higherfrequency.io/developers/publisher-embed-guide#webpage\",\"url\":\"https://docs.higherfrequency.io/developers/publisher-embed-guide\",\"name\":\"Publisher embed guide\",\"description\":\"This guide is for developers who put creator links on a website, in an app, or in any other surface a creator controls.\",\"dateModified\":\"2026-10-27T16:50:44.277Z\",\"isPartOf\":{\"@id\":\"https://docs.higherfrequency.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.higherfrequency.io/developers/publisher-embed-guide#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.higherfrequency.io/developers/publisher-embed-guide#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Developer \u0026 partner docs\",\"item\":\"https://docs.higherfrequency.io/developers/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Publisher embed guide\",\"item\":\"https://docs.higherfrequency.io/developers/publisher-embed-guide\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.higherfrequency.io/developers/publisher-embed-guide#article\",\"headline\":\"Publisher embed guide\",\"name\":\"Publisher embed guide\",\"description\":\"This guide is for developers who put creator links on a website, in an app, or in any other surface a creator controls.\",\"url\":\"https://docs.higherfrequency.io/developers/publisher-embed-guide\",\"mainEntityOfPage\":{\"@id\":\"https://docs.higherfrequency.io/developers/publisher-embed-guide#webpage\"},\"dateModified\":\"2026-10-27T16:50:44.277Z\",\"publisher\":{\"@id\":\"https://docs.higherfrequency.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.higherfrequency.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"The Freeq Growth Network\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"The Freeq Growth Network","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"Developers \u0026 partners","groups":[{"group":"Developer \u0026 partner docs","pages":[{"title":"Developer \u0026 partner docs","href":"/developers"},{"title":"Architecture","href":"/developers/architecture"},{"title":"Attribution engine","href":"/developers/attribution-engine"},{"title":"Commerce providers","href":"/developers/commerce-providers"},{"title":"Money path","href":"/developers/money-path"},{"title":"Partner analytics API","description":"A read-only, server-to-server API that a partner's backend polls to see how its referral program is performing: clicks, conversions, reversals and...","href":"/developers/partner-analytics-api"},{"title":"Publisher embed guide","href":"/developers/publisher-embed-guide"},{"title":"Smart contracts","description":"The platform keeps a public, tamper-evident record of attribution on an EVM-compatible chain.","href":"/developers/smart-contracts"},{"title":"Terminology map","href":"/developers/terminology"}]}]}]},"basePath":"","title":"Publisher embed guide - The Freeq Growth Network","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":[],"chunks":[]}