Campaigns and lead source attribution
How jobs get a campaign, how lead sources and tracking numbers feed it, where to see revenue by marketing channel, and how TradesForce connects over MCP.
- Owner
- Admin
- Dispatcher
- CSR
- Analyst
Part of this feature is available today. The article marks what's still coming.
On this page
Overview#
A campaign says where a job came from. Every campaign belongs to a marketing channel: Website, Google Ads, Local Services Ads, Google Business Profile, Meta ads, Referral, Repeat customer, Phone, Direct mail or Other. Reports add up jobs booked, jobs completed, estimates sold and payments collected per channel, so you can see which marketing pays off.
Most jobs get their campaign automatically: from the lead source, online booking, the referral program, memberships or TradesForce. When a CSR books a job by hand, they pick it on the new job form.
Some parts are not built yet: there is no screen to add or rename campaigns, tracking numbers are set up by TradesWork support, and Google Ads cost and conversions are coming soon. Details are below.
Before you start#
Connecting lead sources (Settings › Integrations › Booking Providers & Lead Sources) needs
settings.manage. Owners and admins have it.Working leads at Leads needs
customers.read; booking them needscustomers.write. Dispatchers and customer service have both.Booking a job with a campaign needs
jobs.write.Seeing revenue by channel on Reports needs
reports.read. Owners, admins, dispatchers, customer service, accounting and viewers have it.Creating API keys for TradesForce or another system needs
api_keys.manage. Owners and admins have it.
Steps#
Pick a campaign when booking by hand#
Click New job (or Book job from a call or customer).
In Campaign, pick where the customer heard about you. The list shows active campaigns as "<name> · <channel>".
Leave it on None only if you truly don't know. Jobs without a campaign show as Unattributed in reports.
The campaign shows on the job page under Campaign and in the jobs list. It can't be changed after the job is booked today.
Where automatic campaigns come from#
Online booking: the campaign "Online booking" (Website channel).
Leads booked from the Leads inbox: a campaign named after the lead's campaign or source, for example "Angi", "Thumbtack" or "Referral". If that campaign doesn't exist yet, it is created under the Other channel.
Website forms and Zapier (the webhook source): send a
campaignfield in the JSON to set the campaign name.Customer referrals: "Referral" (see Run a customer referral program).
Memberships: your first active Repeat customer campaign, or one named "Memberships".
TradesForce over MCP: the campaign name TradesForce sends, or the channel's name. Campaigns TradesForce creates carry its campaign id, so TradesWork shows them with a via TradesForce label on the job page, the lead page and under the channel in Reports › Revenue by marketing channel. Your marketing coordinator agent on the AI Team reads them too.
AI receptionist bookings: the campaign of the tracking number that was called, or "AI receptionist" (Phone channel).
Import from ServiceTitan: your campaigns come over with their names, and the channel is guessed from the name and category.
Connect lead sources#
Go to Settings › Integrations › Booking Providers & Lead Sources.
Pick a card: Website forms and other systems (webhook), Angi, Thumbtack or Lead emails (any vendor).
Click Create secret (or Create address for lead emails). Copy the secret right away: it won't be shown again.
Click Copy URL and paste the URL and secret into the lead site, following the card's instructions. For lead emails, set up auto-forwarding to the address shown.
New leads appear in Leads within seconds. Last lead on the card shows when the last one arrived.
Use Turn off to pause a source, or New secret to replace a leaked one.
Thumbtack's direct connection needs Thumbtack partner approval. Until then, forward Thumbtack lead emails. Yelp and Google Local Services Ads connect by forwarding their lead emails.
Tracking numbers#
A phone number can be tied to a campaign. Calls to it carry that campaign: the call log shows it as a badge, and Calls lists it as "tracking: <campaign>". Settings › Phones lists your tracking numbers.
Today tracking numbers are set up by TradesWork support, not from your settings. Ask support for a number per campaign. When a CSR books a job from a tracked call, they still pick the campaign on the new job form.
See revenue by marketing channel#
Open Reports › All Reports.
Pick the period.
Scroll to Revenue by marketing channel. Columns: Channel, Jobs booked, Jobs completed, Sold and Collected. Click a number to see the jobs behind it.
To look at one campaign, open a metric (for example Collected) and filter it by Campaign.
The owner Dashboard also shows collected revenue by channel and what share has no campaign.
Connect TradesForce (or another marketing tool) over MCP#
Go to Settings (the home page) and scroll to the Integrations card.
Copy the MCP endpoint.
Under New API key, enter a Name (for example "TradesForce") and check only the Permissions it needs:
Book new jobs (
jobs:book) to book jobs from leads.Read jobs and their status (
jobs:read) for job status by its own reference.Read revenue and attribution reports (
reports:read) for revenue by channel, open estimates and KPIs.Read open arrival windows and capacity (
availability:read) to throttle ads when the board is full.Read the demand forecast and demand requests (
demand:read) and Report campaigns launched or declined for demand requests (demand:respond) for the fill-the-board loop.Look up customers (
customers:read) only if it needs to match customers.
Click Create key, copy the key (it won't be shown again) and paste it into TradesForce.
The API keys table shows each key's permissions and Last used. Click Revoke to cut it off.
Jobs that TradesForce books land unscheduled for the dispatcher and also appear in Leads as booked leads.
Settings that change this#
Settings › Integrations › Booking Providers & Lead Sources: which lead sources feed Leads.
Settings › Communications › Web Appointments: online bookings use the "Online booking" campaign.
Settings › Phones › Phone Numbers, Call Recording & Texting: lists tracking numbers.
Settings home › Integrations: API keys for TradesForce and other MCP clients.
Tips#
Train CSRs to fill in Campaign on every hand-booked job. Unattributed revenue can't be credited to anything.
If you imported from ServiceTitan, your campaigns and channels came over. Check the channel split on Reports in the first week.
Give a marketing tool the fewest scopes it needs. You can create a second key rather than widening one.
Troubleshooting#
Angi or Thumbtack revenue shows under "Other" → Campaigns created from leads are filed under the Other channel. → This is a known limit until campaigns can be edited.
A lot of revenue is Unattributed → Jobs were booked with Campaign set to None. → Set it on new jobs.
Leads stopped arriving from a source → Check Last lead on its card, that the source is On, and that the lead site still has the current secret.
"Lead email forwarding isn't configured on this server yet" → Your TradesWork server doesn't have inbound email set up. Contact support.
TradesForce says it isn't allowed to do something → The key lacks that scope. Create a new key with the right permissions.
FAQ#
Can I add or rename a campaign? Not from a settings screen yet. Campaigns are created by the sources above and by the ServiceTitan import. A campaign manager is coming soon.
Can I enter what I spend on each campaign to see return on ad spend? Not yet. Cost per campaign and Google Ads cost import are coming soon. See What's coming for marketing.
Does TradesWork record UTM tags or the Google click id? Not yet. They come with the Google Ads connection.
Coming from ServiceTitan#
Same: every job carries a campaign, and campaigns roll up into channels for revenue reporting. Your ServiceTitan campaigns import with their names.
Different: most jobs get their campaign automatically from the lead, booking or referral, instead of a required dropdown on every call.
Not here yet: a campaign settings page, self-serve tracking numbers and dynamic number insertion, marketing cost per campaign, and Attributed Leads by source, medium and keyword.
Related articles
- Your Marketing coordinator agent (Mara)What Mara, the AI Team marketing coordinator agent for Marketing, does, what it never does, and how to set it.
- Run a customer referral programSet up referral rewards, share each customer's referral link, and approve and issue rewards when a referred friend's first invoice is paid.
- Ask for reviews after every jobTurn on automatic review requests, add your Google and other review links, send a request by hand, and read ratings on the Reviews dashboard.
- All Reports and the metric dictionaryUse All Reports to see every business metric for a period, open the records behind any number, and look up exactly how each metric is calculated.
- Dashboards: the picker, role dashboards, cards and chartsPick a dashboard for your role, read every card, chart and table on it, and build, share and lock your own modular dashboards.
- What's coming for marketingComing soonAn honest list of the marketing and reputation features that aren't built yet, what you can use today instead, and where each one stands.
Still need help?
Ask the assistant a question about your account, or open a ticket and a person will reply.