Connect other apps

Summit Heating & Air

Your business

Calls and texts

Online

More

Classic page · Help

Connect other apps

Google Sheets

Every new lead and job is added to a Google Sheet in your Google Drive. SavedJob can only see the sheet it creates.

  • Leads: date, name, phone, problem, address, source, language, status
  • Jobs: bookings, released times and finished jobs with what they paid
  • Reviews: review requests sent and new Google reviews
Connect Google Sheets

You'll sign in with Google and allow SavedJob to "see, edit, create and delete only the specific Google Drive files you use with this app".

Use Zapier, n8n or Make

For anything else (Jobber, Housecall Pro, Slack, email, your CRM): pick the tool you use and follow the steps.

  1. In Zapier, create a Zap. Trigger: Webhooks by Zapier, event Catch Hook. Copy the address Zapier shows.
  2. Here, open Advanced below, paste it under Add an address, tick the events you want and press Connect.
  3. Press Send a test so Zapier sees a sample lead, then add your action: Google Sheets: Create Spreadsheet Row, Jobber: Create Request, Housecall Pro: Create Job, Slack: Send Channel Message or Email by Zapier.
  4. Map the fields (name, phone, problem, address, preferred time), add a filter "only continue if data test is not true", and turn the Zap on.

Optional: check it's really SavedJob

Use Catch Raw Hook instead, then a Code by Zapier (JavaScript) step with inputs body (raw body), timestamp (X-SavedJob-Timestamp header) and signature (X-SavedJob-Signature header):

  1. Download the n8n template (new booking to a Google Sheets row, new lead to email and Slack). In n8n: Workflows, Import from file.
  2. Open the SavedJob webhook node (a Webhook node, method POST, Raw Body on), copy its Production URL, and add it here under Advanced.
  3. Paste your signing secret (under the address, Signing secret) into the Check signature Code node. The file never contains your secret.
  4. Pick your Google Sheets, email and Slack accounts in their nodes, activate the workflow, then press Send a test here.

Building it yourself

Webhook node (POST, Options: Raw Body) then a Code node with this, then anything you like. It stops the run if the signature or time is wrong. Self-hosted n8n needs NODE_FUNCTION_ALLOW_BUILTIN=crypto.

  1. In Make, create a scenario. First module: Webhooks, Custom webhook, Add. Copy the address.
  2. Here, open Advanced below, paste it under Add an address and press Connect, then Send a test so Make learns the fields.
  3. Add your modules: Google Sheets: Add a Row, Slack: Create a Message, Email: Send an Email, Jobber, HubSpot and so on, mapping data.name, data.phone_display, data.problem, data.address.
  4. Add a filter on the first link: type equal to booking.confirmed (or lead.created), and data.test not equal to true. Turn the scenario on.

Checking it's really SavedJob

In the webhook's advanced settings turn on Get request headers and JSON pass-through. Then add a filter: x-savedjob-signature equal to sha256= followed by sha256(timestamp + "." + body; "hex"; your signing secret), where timestamp is the x-savedjob-timestamp header and body the raw text. At the least, keep the Make address private: it's a long random link.

Sending leads in from n8n or Make

Leads from another form or app can start a SavedJob text conversation: an HTTP Request node or module, method POST, to your private website-form link, body JSON. Only send consent: true when the customer agreed to texts.

The answer is {"ok":true} when we've texted them, or {"ok":false,"error":"bad_phone"} and a message. Change the link anytime under Settings, Website.

Advanced: send to any web address 1 connected

Every new lead, booking and review is sent as a signed web request (a webhook) to each address below, within seconds. Zapier, n8n and Make give you an address to paste here; the steps are above.

https://hooks.zapier.com/hooks/catch/1234567/demo-sheet/
all events
Signing secret

whsec_demo_summit_not_a_real_secret_0001

Every request has an X-SavedJob-Signature header: sha256 HMAC of timestamp.body with this secret.

  • deliveredreview.requestedNov 2, 4:47 PM · 200
  • deliveredreview.requestedNov 2, 4:47 PM · 200
  • deliveredreview.requestedNov 2, 4:47 PM · 200
  • deliveredjob.doneNov 2, 4:47 PM · 200
  • deliveredjob.doneNov 2, 4:47 PM · 200
  • deliveredjob.doneNov 2, 4:47 PM · 200
  • deliveredjob.doneNov 2, 4:47 PM · 200
  • deliveredjob.doneNov 2, 4:47 PM · 200
  • failedjob.doneOct 21, 5:46 PM · 503 · HTTP 503
  • deliveredlead.qualifiedNov 2, 2:52 PM · 200
+ Add an address
Send these events (none ticked = all)

More