Turn accepted Xero quotes into instant client kickoff kits

Every 15 minutes, sweep Xero for newly accepted quotes and spin up a Notion project page, a Slack heads-up, and a draft welcome email for each new client.

Agentic Task
XeroNotionSlack BotGmailSalesOperationsOnboarding AutomationNotifications & AlertsEmail Automation
PromptCreate

Every 15 minutes on a cron schedule, sweep Xero for quotes that have just flipped to ACCEPTED and spin up a full client kickoff kit for each new one. Xero does not fire outgoing webhooks for quote status changes and is not in the platform's poll provider list, so cron polling with a status filter is the correct trigger.

Step 1: pull the candidate quotes. Call the Xero List Quotes operation filtered by Status=ACCEPTED, and pass an updated-since window (e.g. the last hour, or since the previous run's high-water mark) so each sweep only looks at recent movement. Xero quote statuses are DRAFT, SENT, DECLINED, ACCEPTED, INVOICED, and DELETED — only ACCEPTED should trigger this workflow.

Step 2: dedupe against a running Notion index. Use the Notion Query a Database operation against a customer-configured 'processed quote IDs' index (a database or index page holding one row per already-processed Xero QuoteID). Skip any quote whose ID is already in the index. This makes the sweep exactly-once even though cron polling is inherently at-least-once.

Step 3: for each genuinely new accepted quote, fetch the full quote detail with Xero Get Quote (to get the line items, totals, and reference/quote number if the list response is thin) and fetch the customer with Xero Get Contact using the contact ID on the quote. This gives you the customer name, primary contact person, email, phone, and address for personalisation.

Step 4: create the Notion project page with the Notion Create a Page operation, as a child of the customer-configured projects database. The page should contain: a short quote summary (customer, deal size, quote number, accepted date), the full list of accepted line items (description, quantity, unit price, line total), a kickoff checklist tailored to what they actually bought (use judgement here — a services engagement gets different checklist items than a product resale, and different line items imply different first-week actions), and owner assignments pulled from the customer-provided owner mapping (which team member owns which product or service line).

Step 5: post a Slack card to the customer-configured delivery channel using the Slack Bot Send a Message operation. The message should name the customer, the deal size, the account owner, and link back to the Notion project page. Format it as a compact card (Block Kit is fine) so the delivery team can scan the channel and see new kickoffs at a glance.

Step 6: draft a personalised welcome email with the Gmail Create a Draft operation, addressed to the primary contact on the Xero quote. The draft should reference the specific line items the customer accepted (not a generic 'thanks for signing'), name the account owner, and propose two or three kickoff meeting time options. Leave it as a draft in Gmail — do not send. The account owner will review, tweak, and hit send themselves.

Step 7: record the processed QuoteID on the Notion index (create a new row/entry) so the next sweep skips it. Do this last, after the Notion page, Slack card, and Gmail draft have all been created successfully, so a partial failure retries cleanly on the next run rather than silently marking a broken kickoff as done.

Expose these as customer-set variables: the Notion projects database ID, the Notion processed-quotes index page or database ID, the Slack delivery channel, and the account-owner mapping (either a Notion table the agent reads, or a simple JSON/YAML config listing who owns which product line or service category, plus their Gmail sender identity).

Hard rule: do not auto-send the welcome email under any circumstances. The email is always left as a draft for the account owner to review and send. The Notion page and Slack card can be posted automatically, but customer-facing email stays human-in-the-loop.

What does this prompt do?

  • Checks Xero every 15 minutes for quotes that just moved to Accepted
  • Creates a Notion project page for each new client with the accepted line items, a tailored kickoff checklist, and owner assignments
  • Posts a card to your delivery Slack channel with a link to the Notion project and the deal size
  • Drafts a personalised welcome email in Gmail that references what the client bought and proposes kickoff meeting times, left in Drafts for the account owner to review and send

What do I need to use this?

  • A Xero login with permission to read quotes and contacts
  • A Notion workspace with a projects database and a running index page for processed quotes
  • A Slack workspace and the channel where kickoff cards should land
  • A Gmail account for the person who owns the welcome email
  • A simple owner mapping (which team member owns which product or service line)

How can I customize it?

  • Point it at your Notion projects database and the index page it should use to remember what has already been processed
  • Set the Slack channel that receives the kickoff cards
  • Configure the account-owner mapping so each new client gets the right owner assigned and the right person listed as sender on the draft email
  • Adjust the sweep frequency if 15 minutes is too tight or too loose for your pipeline

FAQs

Will this send the welcome email automatically?
No. The email always lands as a draft in Gmail for the account owner to review, personalise if needed, and send. Nothing goes out to the customer without a human clicking send.
What happens if the same quote gets accepted twice or the sweep runs while a kit is already in progress?
Each newly accepted quote is recorded on a Notion index page as soon as it is processed. On every sweep, the agent checks that index first and skips anything it has already handled, so no client gets two kickoff kits.
Which Xero quote statuses trigger a kickoff kit?
Only quotes with status Accepted. Draft, Sent, Declined, Invoiced, and Deleted quotes are ignored. If you want a separate track for Sent quotes, that can be added as a second workflow.
How quickly will the agent notice a newly accepted quote?
Within 15 minutes of the status change. Xero does not send outgoing notifications when a quote is accepted, so the agent polls on a schedule instead of waiting on a push.
Can I run this against more than one Xero organisation?
Yes. Each Xero organisation you connect can be swept on its own schedule, with its own Notion database, Slack channel, and owner mapping.

Related templates

Call overdue Xero customers with an AI collections agent

Every weekday at 10am, an AI voice agent phones your most overdue Xero accounts, logs what each customer promised, and reports back to finance in Slack.

LiveKit
Xero
Deepgram
+2
Agentic Task
Win back LiveChat visitors whose chats went unanswered

Every couple of hours we find the chats your team never answered, email those visitors a real reply, and hand the sensitive ones to a support lead.

LiveChat
Gmail
Slack
Agentic Task
A brand asset library your marketing team actually searches

Every logo, photo, video cut and ad export in one searchable grid, with previews, campaign tags and rights expiry dates at a glance.

General Input Storage
General Input Database
JigsawStack
+1
App
Turn Mailjet email clicks into ranked HubSpot follow-ups

Twice a day we spot the people clicking your pricing and demo pages, create a follow-up task for their owner, and post a ranked recap to Slack.

Mailjet
HubSpot
Slack Bot
Agentic Task
Clean out the Looker dashboards and Looks nobody opens

One board showing every dashboard and Look with its folder, owner and favorite count, so you can find dead content and retire it safely.

Looker
Slack Bot
App
LiveKit live operations console for room moderation

Watch every live room on one screen, remove disruptive guests, start recordings and end stuck sessions without anyone opening a terminal.

LiveKit
Slack Bot
General Input Database
App

Stop scrambling every time a quote gets signed.

Every accepted deal shows up ready to run: a project in Notion, a heads-up in Slack, and a draft welcome email waiting for the owner to review.