Troubleshoot 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.
You ran a campaign, bookings came in, and the report credits them to Direct/Unknown. Frustrating — but the cause is nearly always one of a short list. Work down it in order; the first three account for most cases.
Some Direct/Unknown is normal and healthy
Phone bookings, walk-ins entered by staff, and repeat guests who go straight to your website all belong in Direct/Unknown. The goal is not to eliminate it — it is to make sure your campaign traffic is not hiding inside it.
1. The widget was never published
Widget settings use a draft-and-publish model. If the configuration was saved but never published, the live experience is not the one you configured. Open Business Profile → Booking Widget (/app/business/widget) and check the status reads Published and the last published date matches when you made your changes.
2. The link is archived or inactive
Every tracking link has an Active/inactive setting. Open Marketing Tracking (/app/business/widget/tracking) and confirm the link is still active and has not been archived. Campaigns are archived rather than deleted so historical reports stay intact — but an archived campaign is not collecting new bookings.
3. The ?ref= parameter was stripped
This is the single most common cause. Attribution is resolved from the tracking id in the URL:
If the guest arrives without ?ref=, there is nothing to resolve and the booking is correctly recorded as Direct/Unknown. Common ways the parameter disappears:
Test before you spend
Use the open/test action on the tracking link in the portal, then test the link again in its final home — the ad, the email, the listing. Most attribution problems are created by whatever sits between the two.
4. The booking fell outside the 30-day window
Attribution is held for 30 days from the moment the guest opens the link. A guest who clicked six weeks ago and books today has no attribution left to carry, and will show as Direct/Unknown. This is expected behaviour, not a bug.
5. Browser privacy modes
Strict privacy settings, private browsing sessions and some privacy-focused browsers can prevent the attribution from persisting across the guest’s journey. Nothing is broken on your side; a proportion of traffic will simply not be attributable.
6. The booking was made by staff in the portal
A booking entered by your team in the Partner Portal did not come through a tracked guest-facing surface, so it has no tracking link. If a guest phones after seeing your ad and a team member books them in, that booking will show as Direct/Unknown however well your campaign is set up.
7. Bookings that pre-date your tracking
Bookings made before tracking links existed for your account keep working normally and appear as Direct/Unknown. Attribution is not applied retroactively.
Things that are not the cause
- A guest refreshing the page. Attribution is reload-safe and a refresh does not double-count or lose the session.
- The widget being inside an iframe. Attribution is preserved through iframes, redirects and new tabs.
- Renaming a campaign. Attribution is stored immutably on the booking, so past reports never change.
- Someone editing the URL. The tracking id is opaque and resolved server-side — the address bar cannot be used to reassign a booking.
A quick diagnostic sequence
- Confirm the widget configuration is Published.
- Confirm the tracking link is Active and not archived.
- Use the open/test action in the portal — the link itself should resolve.
- Click the link from its real home (the ad, email or listing) and check
?ref=survives to the final URL. - Make a test booking through that path.
- Open Reports → Bookings (
/app/reports/bookings) and filter by that tracking link to confirm the test booking is attributed. - Cancel the test booking so it does not distort your figures.
Still stuck?
Email Support@seatingly.com with the tracking name, the campaign, the URL you actually published, and the date and time of a booking you expected to be attributed. Those four details let us reproduce it quickly.
Related reading: Create marketing tracking links and Measure booking ROI in Marketing Insights. Or contact the Seatingly team.
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 articleReports and AnalyticsExport booking and campaign reports
Filter Reports → Bookings by source, campaign, status, location or date, then export a CSV that matches exactly what you filtered.
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.