Use tracking links in Facebook and Instagram campaigns
Attribute bookings to paid ads, organic posts, Stories and link-in-bio traffic — and avoid the link shorteners that quietly break attribution.
Social platforms report clicks and impressions. They cannot tell you how many people actually sat down at a table or turned up for an appointment. Tracking links close that gap by attributing the booking itself, so you can compare a paid campaign against a free post on the same terms.
Set up one link per thing you want to compare
The most common mistake is creating a single "social" link for everything. Split your links along whatever line you actually want to make a decision about.
Keep the campaign name identical across all of them. That way Marketing Insights can show you the campaign as a whole and let you drill into which surface and creative earned the bookings.
Paid ads in Meta Ads Manager
- Create the tracking link in Marketing Tracking (
/app/business/widget/tracking) using the Facebook or Instagram source preset. - Copy the custom booking link.
- In Ads Manager, open the ad and paste the link into the Website URL / destination field.
- Use the ad’s own call-to-action button — “Book now” where the objective allows it.
- Publish, then click your own live ad once and confirm the booking flow opens correctly.
Do not put the link through a shortener
Some shorteners and redirect services drop query parameters, which strips the ?ref= value and leaves the booking labelled Direct/Unknown. Paste the Seatingly link directly wherever the platform accepts a full URL.
Organic posts, Stories and bio links
- Bio link. Point your profile link at a tracking link with medium
organic-social. Change it when you change what you are promoting. - Link-in-bio tools. If you use a landing page tool, paste the full tracked link into the button there. Check afterwards that the tool passes the whole URL through rather than rewriting it.
- Stories. Attach the tracked link to the story link sticker.
- Facebook page button. Set your page’s action button to your tracked booking link so the permanent “Book now” on your page is measured too.
Why social numbers never match exactly
Your ad platform and Seatingly are counting different things, so the two dashboards will never agree perfectly. That is expected, not a fault.
Note
Attribution survives in-app browsers, iframes, redirects and new tabs, and a page refresh does not double-count. What it cannot survive is a guest who sees your ad, does not click it, and books later by searching for you — that booking is genuinely Direct/Unknown.
Judging whether the campaign worked
Enter your spend in Marketing → Insights (/app/marketing/insights) and Seatingly will calculate the metrics that matter:
- Cost per booking = spend ÷ confirmed bookings
- Cost per completed booking = spend ÷ completed bookings
- ROAS = attributed revenue ÷ marketing spend
Cost per completed booking is the honest number for social campaigns — discount-led social traffic tends to no-show more than a repeat guest booking direct. See Measure booking ROI in Marketing Insights for the full picture.
Was this article helpful?
Your answer helps us decide what to rewrite next.
Related articles
Create marketing tracking links
Build a tracked booking link, embed code or QR code so every booking is attributed to the campaign that produced it.
Read articleMarketing and TrackingMeasure booking ROI in Marketing Insights
Enter your spend and average values, then read conversion rate, completion rate, ROAS and cost per booking to see which channels pay for themselves.
Read articleTroubleshootingTroubleshoot missing campaign attribution
Bookings showing as Direct/Unknown when you expected a campaign? Work through the real causes, in the order they are most likely.
Read articleStill need a hand?
If a guide did not cover it, a real person on the Seatingly team will. Tell us your business name and what you are trying to do, and we will reply within 12 hours.