# 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.

- Workflow type: agent
- Services: Workiz, Google Ads, Google Sheets, Slack Bot
- Categories: Marketing, Operations
- Published: 2026-08-10

## What it does

- 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 you'll need

- 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

## Prompt

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.

## How to customize

- 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.

## FAQ

### 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.

Use this prompt in General Input: https://www.generalinput.com/prompts/weekly-lead-source-roi-report-for-workiz-and-google-ads