Weekly lead source ROI report for Workiz and Google Ads

Every Monday, match last week's ad spend to the jobs you actually booked in Workiz, then get the winners, losers, and where to move budget in Slack.

Agentic Task
WorkizGoogle AdsGoogle SheetsSlack BotMarketingOperationsAI ReportsDaily Digests
PromptCreate

Every Monday at 7am, tell me which of my lead sources are actually making money instead of just making noise. The report covers the previous full week, Monday through Sunday.

Start with Google Ads. Use the Campaign Performance Report operation to pull campaign level clicks, impressions, cost, and conversions for that week. Cost comes back in micros, so divide by one million to get real currency amounts.

Then pull the same period out of Workiz. Use List Leads for every lead created during the week, and List Jobs for the jobs. Both list endpoints return at most 100 records per call, so page through with the offset until you have the whole week. Workiz has no standalone invoice endpoint, so take job value from the amount fields on the job records themselves.

Match the lead source values on the Workiz records against the Google Ads campaign names. Lead source naming is rarely an exact match, so match on close names and treat anything you cannot confidently map as its own unmapped source rather than forcing it into a campaign. When attributing a booked job, prefer the source field on the job record; if jobs do not carry one, match a job back to its lead on client name or phone number.

For every source, work out the number of leads, how many became booked jobs, total job value won, cost per booked job, and return on ad spend. Count a job as booked when its status shows it was scheduled, completed, or otherwise won, and exclude cancelled work. Sources with no matching Google Ads campaign, such as referrals or repeat customers, should still appear with their leads, booked jobs, and job value, leaving cost and return on ad spend blank.

Before writing anything, read the existing rows on the Google Sheets tracking tab with Get Values so you have the prior week's numbers for the same sources. Then append one row per source for the new week using Append Values, starting each row with the week start date, so the tab builds a week over week trend.

Finally, post a summary to Slack with Send a Message. Name the best and worst performing sources, give a concrete recommendation on where to shift budget, and flag any source whose cost per booked job rose more than 25 percent against the prior week's row. Keep it short enough to read on a phone.

What does this prompt do?

  • Pulls last week's ad spend, clicks, and conversions from Google Ads alongside every lead and job from Workiz.
  • Works out, for each lead source, how many leads came in, how many turned into booked jobs, the revenue won, what each booked job cost you, and the return on your ad spend.
  • Adds one row per source to a Google Sheets tab every week, so a week over week trend builds up on its own.
  • Posts a Slack summary naming your best and worst sources, recommending where to shift budget, and flagging any source whose cost per booked job jumped more than 25 percent.

What do I need to use this?

  • A Workiz account on a plan with the Developer API add-on switched on
  • A Google Ads account you can sign in to, plus the customer ID for the account you advertise from
  • A Google Sheets spreadsheet with a tab set aside for weekly tracking
  • A Slack workspace and a channel where the summary should land
  • Lead sources filled in on your Workiz leads, since that is the field matched against your campaigns

How can I customize it?

  • Change when it runs. Monday at 7am suits most owners, but a Friday afternoon readout works just as well.
  • Adjust the 25 percent jump in cost per booked job that triggers a flag, or add a minimum spend before a source gets called out.
  • Send the summary to a different channel, or straight to a manager as a direct message.
  • Fold in non ad sources like referrals and repeat customers so you can compare paid against organic side by side.

FAQs

Will this work if some of my leads do not come from ads?
Yes. Sources with no matching campaign still appear with their leads, booked jobs, and revenue. They simply have no cost or return on ad spend figure, which makes it easy to compare paid sources against referrals and repeat customers.
How does it know which Workiz leads came from which campaign?
It uses the lead source field on your Workiz leads and matches those values against your Google Ads campaign names. The more consistent your lead source naming is, the cleaner the match. Anything it cannot confidently map is reported separately rather than being forced into a campaign.
Where does the job value come from?
From the job records in Workiz themselves, so the revenue figure reflects work you actually booked rather than what a lead was estimated to be worth.
Do I need to set up the spreadsheet first?
Yes. Create a spreadsheet and a tab for tracking before the first run. From then on the workflow appends one row per lead source each week, so the history builds automatically.
What happens if a campaign spent money but booked nothing?
It still shows up in the report with zero booked jobs. That is usually the clearest signal in the whole summary that budget should move somewhere else.

Related templates

Build a credential rotation checklist when someone leaves

When someone leaves, we check which shared passwords they used in their final months and post a ranked rotation list to your security channel.

1Password
Rippling
Slack Bot
+1
Agentic Task
Weekly Amazon S3 bucket security audit posted to Slack

Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.

Amazon S3
Slack Bot
Google Sheets
Agentic Task
Log Agorapulse social conversations to HubSpot contacts

Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.

Agorapulse
HubSpot
Slack Bot
Agentic Task
Turn procurement portal tenders into CRM deals each morning

Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.

Anchor Browser
Google Sheets
HubSpot
+1
Agentic Task
Clean up HubSpot contacts from your Amazon SES suppression list

Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.

Amazon SES
HubSpot
Slack Bot
Agentic Task
Draft polite follow-ups for emails that never got a reply

Every weekday at 4pm, spot the threads that went quiet, stage a ready-to-send nudge in your mailbox, and get a ranked Slack recap.

Aurinko
Google Sheets
Slack Bot
Agentic Task

Stop guessing which ads actually pay for themselves.

Get a weekly readout that ties every dollar of ad spend to the jobs you booked, plus a clear recommendation on where to move budget next.