> ## Documentation Index
> Fetch the complete documentation index at: https://docs.onlyfansapi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Smart Links V2 (/introduction/guides/onlyfans-meta-pixel-smart-links)

## Overview

A Smart Link is a tracking URL that redirects a visitor to an OnlyFans tracking link or free-trial link. The redirect records the visit, preserves campaign identifiers, and connects later subscriptions and conversions to the click that produced them.

```text
https://trk.of-traffic.com/go/{SMART_LINK_ID}
```

For each new visit, Smart Links can record:

* A generated `click_id`
* Your own external click ID
* Meta, Google, TikTok, and Snapchat click IDs
* UTM and affiliate parameters
* Referrer, country, city, device, browser, and bot status
* The matched traffic source and pre-lander

After the visitor subscribes, Smart Links records subscription, payment, and reply conversions against the attributed click. It can also send those events to tracking pixels and custom postbacks.

## Smart Links V2 workspace

Smart Links V2 organizes analytics and setup into these pages:

| Page                 | Purpose                                                                                  |
| -------------------- | ---------------------------------------------------------------------------------------- |
| **Dashboard**        | Team-wide revenue, cost, ROAS, ARPS, conversion, audience, health, and cohort reporting  |
| **Links**            | Create, edit, tag, share, export, and inspect individual Smart Links                     |
| **Traffic Sources**  | Match visits to channels with rules, record daily spend, and generate source-tagged URLs |
| **Records**          | Search team-wide fan, visit, and conversion rows                                         |
| **Tracking Pixels**  | Send server-side events to Meta, TikTok, Snapchat, and CreatorTraffic                    |
| **Custom Postbacks** | Send configurable GET or POST requests for conversion events                             |
| **Pre-landers**      | Build and publish tracked landing pages without hosting them yourself                    |
| **Ad Spend**         | Sync Meta campaign spend and assign campaigns to traffic sources                         |
| **Feedback**         | Tell the team what you want built next in Smart Links                                    |

## Create a Smart Link

Open **Smart Links → Links**, then click **Create Smart Link**.

1. Select the connected OnlyFans **Account**.
2. Enter a **Smart Link Name**.
3. Select an **Offer Type**:
   * **Tracking Link** works with free or paid creator accounts.
   * **Free Trial** requires a paid creator account. Set the trial length from 1 to 360 days.
4. Optionally attach one or more **Tracking Pixels**.
5. Optionally select an OnlyFans list for new subscribers.
6. Optionally configure **Auto-Fill Fan Notes**.

The account and offer type cannot be changed after creation. You can edit the name, pixel connections, subscriber list, fan note template, and free-trial duration later.

<Callout type="warn">
  Changing a Free Trial link's duration regenerates its inventory. New visitors receive the updated duration after the new pool is ready. Links already opened by fans keep their original duration.
</Callout>

## Build the destination URL

Start with the URL shown on the **Links** page:

```text
https://trk.of-traffic.com/go/{SMART_LINK_ID}
```

Append the identifiers and campaign fields your traffic source provides:

```text
https://trk.of-traffic.com/go/{SMART_LINK_ID}?ecid={CLICK_ID}&utm_source=meta&utm_campaign={CAMPAIGN_ID}&utm_content={AD_ID}
```

### Supported tracking parameters

| Parameter               | Stored as                | Typical use                                                                  |
| ----------------------- | ------------------------ | ---------------------------------------------------------------------------- |
| `ecid`                  | External Click ID        | Tracker or ad-platform identifier you want returned in reports and postbacks |
| `fbclid`                | Meta click ID            | Meta click matching                                                          |
| `gclid`                 | Google click ID          | Google Ads click matching                                                    |
| `gbraid`                | Google GBRAID            | Google iOS web-to-app attribution                                            |
| `wbraid`                | Google WBRAID            | Google iOS app-to-web attribution                                            |
| `ttclid`                | TikTok click ID          | TikTok Events API matching                                                   |
| `sccid` or `ScCid`      | Snapchat click ID        | Snapchat Conversions API matching                                            |
| `utm_source`            | UTM source               | Channel reporting and traffic-source rules                                   |
| `utm_medium`            | UTM medium               | Dashboard breakdowns                                                         |
| `utm_campaign`          | UTM campaign             | Dashboard breakdowns and A/B comparison                                      |
| `utm_content`           | UTM content              | Creative reporting and A/B comparison                                        |
| `utm_term`              | UTM term                 | Keyword or audience reporting                                                |
| `affS1` through `affS5` | Affiliate sub-parameters | Affiliate and tracker metadata                                               |
| `src`                   | Traffic-source signal    | Explicitly match a V2 traffic source                                         |
| Any custom parameter    | Landing URL query value  | Custom traffic-source matching and fan note variables                        |

Use one `?` before the first parameter and `&` before each additional parameter.

## Click and subscription attribution

Smart Links uses a first-party visitor cookie and a click fingerprint built from the Smart Link, request, external click ID, ad click IDs, and pre-lander. A repeated visit from the same first-party visitor with the same fingerprint reuses the click row and increments its gross-click count.

The subscription attribution window is **6 hours** from the click. When OnlyFans confirms a subscription against one of the link's inventory items, Smart Links claims an eligible click from that window and creates a `new_subscriber` conversion.

Once a fan is attributed, later payments and inbound messages can create additional conversions on that Smart Link. The link's fan record accumulates net revenue, tips, and reply counts.

Bots and duplicate visits remain available in **Records → Visits** for investigation. Dashboard totals exclude them.

<Callout>
  If inventory generation is failing because an account session expired, the **Links** page shows a reauthentication warning. Until the account is reconnected, visitors may be sent to the creator's profile fallback instead of a generated inventory link.
</Callout>

## Traffic sources

Traffic sources let several channels use the same Smart Link while keeping their clicks, revenue, pixel events, postbacks, and spend separated.

Open **Smart Links → Traffic Sources**, then click **Add Traffic Source**. Choose a type:

* **Paid** for advertising channels
* **Organic** for posts, stories, and bio links
* **Affiliate** for partners or agencies
* **Other** for anything else

You can start from a Meta, TikTok, X, Reddit, Snapchat, YouTube, Telegram, or Google Ads template, or define a source manually.

### Matching rules

Every traffic source needs at least one rule. A rule contains a signal, operator, and value.

| Signal       | Reads from                                     |
| ------------ | ---------------------------------------------- |
| `src`        | The `src` query parameter                      |
| `aff`        | `affS1` through `affS5`, checked in slot order |
| `utm_source` | The `utm_source` query parameter               |
| `param`      | A custom query parameter you name              |
| `referrer`   | The referring host                             |

Operators are **equals**, **contains**, **starts with**, and **ends with**. Matching is case-insensitive. Referrer rules compare normalized host names.

Signals are checked in this order:

1. `src`
2. `affS1` through `affS5`
3. `utm_source`
4. Custom query parameters
5. Referrer

An exact rule wins before pattern rules within the same signal. If no rule matches, the visit appears as **Unattributed**.

### Generate a source-tagged URL

On a traffic source row, click **Generate Smart Link URL** and select a Smart Link. The builder adds a query parameter that resolves back to that source.

Referrer-only sources cannot generate a tagged URL. Add a `src`, `aff`, `utm_source`, or custom parameter rule if you need one.

Deleting a traffic source stops future matches. Historical clicks and reports keep the archived source name.

## Spend, cost, and ROAS

Open a traffic source's **Daily Spend** action to enter what you spent. Pick a single day, or a date range and one total: the total is split evenly across the days in the range, with the rounding remainder on the last day. Saving replaces any manual amount already on those days.

The dashboard apportions a traffic source's daily spend across Smart Links by each link's share of non-bot, non-duplicate clicks from that source. A Smart Link with no source-matched clicks in the selected range falls back to the manual cost set on the link itself.

### Manual cost on a Smart Link

Edit the **Cost** cell on the **Links** page. Three modes are available:

| Mode          | Value you enter                           |
| ------------- | ----------------------------------------- |
| **Per Sub**   | Cost of each subscriber the link produces |
| **Per Promo** | One flat total for the link               |
| **Per Click** | Cost of each click                        |

Only **Per Sub** is scoped to the selected date range, as cost per sub multiplied by the subscribers gained in range. **Per Promo** and **Per Click** resolve to a flat lifetime total. Manual cost is ignored for any link a traffic source claimed in range, and while a traffic-source filter is applied.

### Sync Meta Ads spend

Open **Smart Links → Ad Spend** to connect Meta ad accounts.

1. Create or select a Meta system user.
2. Assign the ad accounts you want to track.
3. Generate a non-expiring token with `ads_read`.
4. Connect one or more USD ad accounts.
5. Assign each discovered Meta campaign to a traffic source.

The sync writes daily campaign spend into the same traffic-source cost records used by manual entries. Neither side overwrites the other: a manual save skips days already synced from Meta and reports how many it left untouched, and the sync skips days entered manually. Whichever writes a date first keeps it.

<Callout type="warn">
  Meta spend sync supports USD ad accounts. The dashboard stores and renders traffic-source costs as USD without currency conversion.
</Callout>

## Dashboard and records

The team **Dashboard** defaults to the last 30 days and net revenue. You can filter by date, Smart Link, traffic source, and net or gross revenue. Dashboard date ranges are capped at 92 days.

The team dashboard has four sections. Individual Smart Link performance adds a fifth section:

| Section            | Includes                                                                                                                                    |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------- |
| **Overview**       | Revenue, cost, ROAS, ARPS, cost per sub, conversion rates, conversion funnel, subscription mix, trends, traffic sources, devices, and links |
| **Audience**       | Subscribe cohorts and fan reply rates                                                                                                       |
| **Compare**        | Ranked breakdowns and A/B comparison by UTM or affiliate values                                                                             |
| **Health**         | Chargebacks and pixel delivery                                                                                                              |
| **Time-to-Profit** | Per-link only: cumulative revenue per fan and profit day                                                                                    |

Click a Smart Link to open its per-link **Performance** view. Its **Clicks** and **Conversions** tabs provide the detailed link-specific reports.

The team-wide **Records** section contains:

* **Fans**: one row per fan and Smart Link, with lifetime revenue and tips on that link. Filter by creator, subscription (new or previously subscribed), replies (replied, 3+ replies, never replied), and subscription pricing (free promotion, discounted, regular).
* **Visits**: every click row, including bot visits excluded from dashboard totals. Filter by country, device, and fraud status.
* **Conversions**: every subscription, transaction, and message conversion on the date it occurred. Filter by conversion type, fan, click ID, external click ID, and country.

## Share reports

A Smart Link or a traffic source can be published as a read-only page at `https://app.onlyfansapi.com/share/{TOKEN}`, which opens without an OnlyFans API account.

For a Smart Link, use the share action in the header of its **Performance**, **Clicks**, or **Conversions** page. Revenue visible and revenue hidden are separate shares, each with its own URL and expiry.

For a traffic source, click **Share Links** on its row. Three fixed variants are available:

| Variant                      | Shows                                    |
| ---------------------------- | ---------------------------------------- |
| **Revenue hidden**           | Clicks and subscribers only              |
| **Revenue visible**          | Adds revenue and spenders                |
| **Revenue with chargebacks** | Adds chargeback totals on top of revenue |

An expired share keeps its URL. Clearing or extending the expiry brings the same page back.

## Pre-landers

Smart Links V2 includes hosted pre-landers. Open **Smart Links → Pre-landers** and click **New page**.

Choose a public slug, a template, and one or more creator accounts. The page is published at `https://trk.of-traffic.com/p/{SLUG}`. New pages start as drafts. Use the editor to change copy, images, creator order, and template-specific settings, then publish the page.

Each row on the **Pre-landers** page can copy the public URL, copy it with UTM placeholders (`?utm_source={source}&utm_medium={medium}&utm_campaign={campaign}&ecid={clickid}`), duplicate the page, or delete it.

| Template group     | Available layouts                                                                                                            |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------- |
| **Single creator** | Profile card and age gate (dark or light), gallery tease, gallery hero, feed tease, DM chat tease, link in bio, and live now |
| **Roster**         | Quiz and swipe deck, search directory, and local map                                                                         |

Published pages report views, CTA clicks, click-through rate, subscribers, and net revenue. Each CTA sends the visitor through the selected creator's Smart Link and stamps the visit with the pre-lander's ID.

Pre-landers forward these values into the Smart Link redirect:

* `ecid`
* `fbclid`, `gclid`, `gbraid`, `wbraid`, `ttclid`, and Snapchat `sccid` or `ScCid`
* `utm_source`, `utm_medium`, `utm_campaign`, `utm_content`, and `utm_term`
* `affS1` through `affS5`

`src` and arbitrary custom parameters are not forwarded by built-in pre-landers. Use `utm_source` or an affiliate slot when a traffic-source rule must survive the pre-lander hop.

## Tracking pixels

Open **Smart Links → Tracking Pixels** and click **Add Pixel**. Supported connections are Meta Ads, TikTok Ads, Snapchat Ads, and CreatorTraffic.

Every pixel can:

* Attach to one or more Smart Links
* Fire for all traffic sources or only selected traffic sources
* Store delivery logs for inspection

Meta, TikTok, and Snapchat pixels can also map each Smart Link event to a standard event, custom event, or no event, and can send test events. CreatorTraffic has a fixed new-subscriber conversion and does not support test events.

Available Smart Link pixel triggers are:

| Trigger                       | When it fires                                                                                                  |
| ----------------------------- | -------------------------------------------------------------------------------------------------------------- |
| **Click**                     | A visitor opens the Smart Link                                                                                 |
| **New Subscriber**            | A fan subscribes through the Smart Link                                                                        |
| **First Purchase**            | The first transaction on the link other than the initial new-subscription payment. A rebill can be first.      |
| **Repeat Purchase**           | Other transaction events, including the initial new-subscription payment and transactions after First Purchase |
| **Message Received from Fan** | An attributed fan sends an inbound message                                                                     |
| **Fan Sent 1st Message**      | Sent once when the attributed fan sends the first inbound message                                              |
| **Fan Sent 3+ Messages**      | Sent once when the attributed fan sends the third inbound message                                              |

If a pixel is scoped to specific traffic sources, unmatched visits do not reach it. A pixel with **All traffic sources** receives events from matched and unmatched visits on its attached links.

Platform-specific setup:

* [Meta Pixel](/introduction/guides/meta-pixel-smart-links)
* [TikTok Pixel](/introduction/guides/tiktok-pixel-smart-links)
* [Snapchat Pixel](/introduction/guides/snapchat-pixel-smart-links)
* [CreatorTraffic](/introduction/guides/creatortraffic-smart-links)

## Custom Postbacks

Open **Smart Links → Custom Postbacks** to send conversions to a tracker, webhook, or internal endpoint.

A postback supports:

* **GET** or **POST**
* A templated URL
* A templated POST body
* Custom request headers
* A test request before live traffic uses it

Scopes are:

* **Global**
* **Specific Smart Links**
* **Specific Traffic Sources**

Conversion types are:

| Conversion type     | Slug                  | When it fires                                                  |
| ------------------- | --------------------- | -------------------------------------------------------------- |
| New subscriber      | `new_subscriber`      | A fan subscribes through the Smart Link, once per fan and link |
| New transaction     | `new_transaction`     | An attributed fan makes a payment                              |
| Message received    | `message_received`    | An attributed fan sends an inbound message                     |
| Fan sent 1 message  | `fan_sent_1_message`  | The attributed fan reaches one inbound message                 |
| Fan sent 3 messages | `fan_sent_3_messages` | The attributed fan reaches three inbound messages              |

### Available postback variables

Variables work in the URL, POST body, and custom header values.

| Group        | Variables                                                                                                     |
| ------------ | ------------------------------------------------------------------------------------------------------------- |
| Creator      | `{ofapi_account_id}`, `{creator_onlyfans_id}`, `{creator_onlyfans_username}`, `{creator_onlyfans_name}`       |
| Smart Link   | `{smart_link_id}`, `{smart_link_name}`                                                                        |
| Conversion   | `{conversion_type}`, `{click_id}`, `{external_click_id}`, `{conversion_at}`, `{amount_gross}`, `{amount_net}` |
| Attribution  | `{traffic_source}`                                                                                            |
| Ad click IDs | `{fbclid}`, `{gclid}`, `{gbraid}`, `{wbraid}`, `{ttclid}`, `{sccid}`                                          |
| Fan          | `{fan_onlyfans_id}`, `{fan_onlyfans_username}`, `{fan_onlyfans_name}`                                         |
| Transaction  | `{transaction_type}`, `{transaction_description}`, `{transaction_status}`                                     |

`{traffic_source}` is empty when no traffic-source rule matched. Transaction variables are empty for non-transaction conversions.

For a tracker integration example, see [Connect Keitaro to Smart Links](/introduction/guides/keitaro-smart-links).

## Auto-fill OnlyFans fan data

### Add new subscribers to a list

Choose **Add New Subscribers to List** when creating or editing a Smart Link. When a fan subscribes through that link, Smart Links adds them to the selected OnlyFans list.

### Auto-fill fan notes

Use **Auto-Fill Fan Notes** to append click data to the subscriber's existing OnlyFans notes. Existing text is preserved.

Built-in variables include `{country}`, `{country_code}`, `{city}`, `{zip}`, `{aff_s1}` through `{aff_s5}`, and `{capital_ai_summary}`. Any other `{parameter}` reads the parameter with that name from the Smart Link URL.

`{capital_ai_summary}` requires a CapitalAI-marked click with a numeric conversation ID. See [Connect CapitalAI to Smart Links](/introduction/guides/capitalai-smart-links).

## Troubleshooting

| Problem                                                        | Check                                                                                                                                                      |
| -------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Clicks appear under **Unattributed**                           | Confirm the URL carries a value that matches a traffic-source rule. Use **Generate Smart Link URL** to avoid rule-precedence mistakes.                     |
| Source spend or ROAS is blank                                  | Add daily spend, or connect Meta Ads and assign its campaigns to a traffic source.                                                                         |
| Pixel receives traffic from the wrong channel                  | Edit the pixel and select **Specific traffic sources**. Also confirm the pixel is attached to the intended Smart Links.                                    |
| Pixel receives no unmatched traffic                            | A source-scoped pixel only receives visits stamped with one of its selected sources. Choose **All traffic sources** if it should receive unmatched visits. |
| A pre-lander loses a source tag                                | Built-in pre-landers do not forward `src` or arbitrary custom parameters. Use `utm_source` or `affS1` through `affS5`.                                     |
| Subscriber conversion is missing                               | Confirm the subscription happened within 6 hours of the click and reconnect any account shown in the Links reauthentication warning.                       |
| A deleted source disappeared from setup but remains in reports | Expected. Archiving stops future matches while preserving historical attribution.                                                                          |

## API access

Smart Links V2 setup and team-wide dashboard pages are dashboard features. The public API continues to expose link management and per-link reports:

* [List Smart Links](/api-reference/smart-links/list-smart-links)
* [Create Smart Link](/api-reference/smart-links/create-smart-link)
* [Get Smart Link Stats](/api-reference/smart-links/get-smart-link-stats)
* [List Smart Link Clicks](/api-reference/smart-links/list-smart-link-clicks)
* [List Smart Link Conversions](/api-reference/smart-links/list-smart-link-conversions)
* [List Smart Link Postbacks](/api-reference/smart-link-postbacks/list-smart-link-postbacks)