Smart Links V2
Attribute OnlyFans clicks, fans, revenue, replies, traffic sources, ad spend, pixel events, and postbacks from one Smart Links workspace.
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.
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.
- Select the connected OnlyFans Account.
- Enter a Smart Link Name.
- 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.
- Optionally attach one or more Tracking Pixels.
- Optionally select an OnlyFans list for new subscribers.
- 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.
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.
Build the destination URL
Start with the URL shown on the Links page:
https://trk.of-traffic.com/go/{SMART_LINK_ID}Append the identifiers and campaign fields your traffic source provides:
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.
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.
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:
srcaffS1throughaffS5utm_source- Custom query parameters
- 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.
- Create or select a Meta system user.
- Assign the ad accounts you want to track.
- Generate a non-expiring token with
ads_read. - Connect one or more USD ad accounts.
- 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.
Meta spend sync supports USD ad accounts. The dashboard stores and renders traffic-source costs as USD without currency conversion.
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:
ecidfbclid,gclid,gbraid,wbraid,ttclid, and SnapchatsccidorScCidutm_source,utm_medium,utm_campaign,utm_content, andutm_termaffS1throughaffS5
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:
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.
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.
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: