Site announcement

Distribute every lead automatically — to the right agent or the best buyer.

HoneyFalcon Help Center

Connect Google Sheets

Append accepted leads to a Google Sheet through an Apps Script web app.

Append selected fields from accepted HoneyFalcon leads to a shared Google Sheet through a customer-owned Apps Script web app.

Why it matters

A Sheet can provide a lightweight shared register for a team that does not yet need a full CRM. The connector keeps the field allowlist and HTTP result visible, while the customer-owned script controls the row layout and access to the spreadsheet.

Where to work

Prepare the destination Sheet and Apps Script first. Then open Company -> Connectors, select New connector, choose Google Sheets via Apps Script, and select Load preset.

Steps

  1. Create the destination Sheet and add column headers in the order expected by the script.
  2. Open Extensions -> Apps Script and add a doPost handler that parses the JSON body and appends one row.
  3. Deploy a new web app version with Execute as: Me and an access level that permits HoneyFalcon's server request, then copy the final /exec URL.
  4. Load the Google Sheets preset in HoneyFalcon and paste the /exec URL into Destination URL.
  5. Review Payload fields and keep the JSON keys, script properties, and Sheet columns aligned.
  6. Confirm Successful HTTP statuses 200 and 302, then run Test draft with synthetic data.
  7. Verify the test row in the Sheet, Create connector or Save changes, Activate the saved revision, and verify a separate real synthetic delivery.

See it in HoneyFalcon

HoneyFalcon google Sheets preset selected in the connector editor in a desktop workspace.

Step 1 of 3: Google Sheets preset selected in the connector editor.

HoneyFalcon google Sheets destination and protected credential controls in a desktop workspace.

Step 2 of 3: Google Sheets destination and protected credential controls.

HoneyFalcon google Sheets endpoint and Successful HTTP statuses to review before creation in a desktop workspace.

Step 3 of 3: Google Sheets endpoint and Successful HTTP statuses to review before creation.

Build a small, observable Sheets handoff

Prepare the row contract

Create explicit Sheet headers before writing the script. The example below appends email, first name, last name, phone, and HoneyFalcon lead ID in that order.

The generic payload also includes delivery_id. Keep lead_id when the row should identify the HoneyFalcon lead; use delivery_id when you need to correlate one outbound delivery.

If you change the columns, update the script, Payload fields, and JSON template together.

1function doPost(e) {
2 const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
3 const lead = JSON.parse(e.postData.contents)
4
5 sheet.appendRow([
6 lead.email,
7 lead.first_name,
8 lead.last_name,
9 lead.phone,
10 lead.lead_id,
11 ])
12
13 return ContentService
14 .createTextOutput(JSON.stringify({ ok: true }))
15 .setMimeType(ContentService.MimeType.JSON)
16}

Deploy the script as a web app

The script needs a doPost handler that parses the request and returns a small response. Deploy it as a web app, choose Execute as: Me, and use the access setting required for HoneyFalcon's server request.

After changing the code, deploy a new web app version. Editing the project alone may not update the version already serving the /exec URL.

Keep the final /exec URL private

Paste the deployed /exec URL into the Google Sheets preset. Do not publish it in screenshots or support tickets and do not add reusable secret material to its query string.

The preset sends JSON and normally does not need a HoneyFalcon credential.

Understand HTTP 302

Google Apps Script ContentService can answer through a one-time redirect. The preset accepts 200 or 302 as final successful responses and does not follow the cross-origin output redirect.

Delivered therefore records an accepted HTTP boundary. Confirm the actual row in Google Sheets separately.

Separate the test row from real delivery

Test draft can append a synthetic row, but it does not save or activate the connector and does not create Delivery history.

After saving and activating, accept a new synthetic lead and confirm both its separate Delivery history record and its own Sheet row.

Keep the deployed /exec URL private and accept 302 only as defined by this preset. A successful HTTP response is not proof of a row until you verify the Sheet.

The Sheets handoff is ready when

  • The deployed /exec URL, selected fields, JSON keys, script properties, and Sheet columns agree.
  • The connector retains Successful HTTP statuses 200 and 302.
  • Test draft adds only the expected synthetic values without saving or activating the connector.
  • A separate accepted synthetic lead has both a Delivery history result and the expected row in the Sheet.

Continue learning