Skip to main content

A1 Notation in API Source — Advanced Guide

Full reference for the {{...}} placeholder syntax in API Source: render modes, string, numeric, and date filters, with complete examples and error-handling behaviour.

Written by Karoline Fernezlian

The {{...}} placeholder syntax lets you pull live values from your destination Google Sheet into any part of an API Source request — URL, headers, or body — at the moment the connection runs.

Where this works: API Source connections whose destination is a Google Sheets file. Connections writing to Excel, BigQuery, CSV, Dropbox, etc. ignore the syntax — placeholders are sent as literal {{...}} text.

New to A1 Notation? Start with the Basic Guide first.

1. Syntax at a glance

{{ <tab>!<reference> [|<filter>]* }}

  • {{ and }} — double braces (always two on each side).

  • <tab> — the worksheet (tab) name in your destination spreadsheet.

  • ! — separator between tab name and cell reference.

  • <reference> — a cell like A1 or the special form A:last.

  • |<filter> — optional; chain as many as you need, applied left-to-right.

Placeholder

Meaning

{{Sheet1!A1}}

Cell A1 of Sheet1, formatted display value (default).

{{Sheet1!A:last}}

Last non-empty cell in column A of Sheet1.

{{'My Sheet'!B7}}

Tab name with a space — must be wrapped in single quotes.

{{Sheet1!A1|U}}

Cell A1 as the raw (unformatted) value.

{{Sheet1!A1|date|fmt:iso_d}}

Parse A1 as a date, output as ISO date.

{{Sheet1!A1|trim|upper}}

Cell A1 trimmed and uppercased.

2. Tab names

Tab name

Placeholder example

Letters, digits, underscore (no spaces)

{{Sheet1!A1}}, {{my_tab!A1}}

Contains a space or special character

{{'My Sheet'!A1}}, {{'2026 Sales'!A1}}

Contains a literal apostrophe

Double it: {{'O''Brien'!C3}}

When in doubt, always wrap the tab name in single quotes — that form works for any name.

3. Cell references

Form

What it returns

A1, B7, AB42

A single cell.

A:last

The single cell in column A at the last non-empty row in that column.

Only single cells are supported. Ranges like A1:B5 are not supported. The column letter and last keyword are case-insensitive.

4. Render mode (first filter, if used)

Controls how the cell value is read from Google Sheets. If omitted, defaults to F.

Filter

What you get

Example: cell formatted as $1,234.50

F (default)

Exactly what the cell displays — locale-aware, formatted text.

"$1,234.50"

U

Raw underlying value: numbers as numbers, booleans as TRUE/FALSE.

1234.5

Note: F or U must be the first filter if used. {{Sheet1!A1|trim|U}} is invalid and will be left as literal text.

5. String filters

Filter

Effect

Example

trim

Removes leading and trailing whitespace.

" hi " → "hi"

upper

Uppercases the string.

"hello" → "HELLO"

lower

Lowercases the string.

"Hello" → "hello"

6. Numeric filters

Filter

Effect

int

Convert to integer. Truncates toward zero. TRUE→1, FALSE→0.

float

Convert to float.

Warning: |int and |float fail loudly (stop the run) if the value is not numeric. For example, |int on "abc" is an error.

7. Date input filters

These filters parse the cell value into a date. They fail loudly if parsing isn't possible.

Filter

What it does

date

Auto-detect format (US-leaning on ambiguous dates like 01/02/2026 → Jan 2).

date_us

Force US interpretation (month first). 01/02/2026 → January 2.

date_eu

Force EU interpretation (day first). 01/02/2026 → February 1.

date_iso

Strict ISO 8601 only (e.g. 2026-05-06).

By itself, a date filter outputs an ISO datetime (e.g. 2026-05-06T14:30:45). To get a different format, chain a fmt:* filter after it.

8. Date output filters — fmt:*

Format a date that has already been parsed. Always chain after a date input filter — used alone they are a no-op.

All examples assume parsed datetime: 2026-05-06 14:30:45

Filter

Output

fmt:day

6

fmt:month

5

fmt:year

2026

fmt:timestamp

1778025600 (Unix seconds, 10 digits)

fmt:timestamp_ms

1778025600000 (Unix ms, 13 digits — JS/Java)

fmt:serial

46148.0 (Google Sheets serial)

fmt:iso_dt

2026-05-06T14:30:45

fmt:iso_d

2026-05-06

fmt:us_dt

05/06/2026 02:30:45 PM

fmt:us_d

05/06/2026

fmt:eu_dt

06/05/2026 14:30:45

fmt:eu_d

06/05/2026

Mnemonic: _dt = datetime (with time), _d = date only.

9. Where placeholders go in a request

URL — automatically URL-encoded. Keep placeholders in the path or query string, not in the scheme or hostname.

https://api.example.com/products/{{Sheet1!A1}}
https://api.example.com/search?q={{Sheet1!B2}}&limit=10

Headers — substituted verbatim (CR/LF stripped).

Authorization: Bearer {{Sheet1!A1}}

Body — substituted verbatim, no automatic escaping. You are responsible for placing the placeholder correctly inside your JSON/XML/form body.

{ "year": "{{Sheet1!A1}}" }   ← becomes: { "year": "2026" }
{ "year": {{Sheet1!A1|U}} }   ← becomes: { "year": 2026 }  (unquoted)

Warning: If the cell value contains a " character and you place the placeholder inside a JSON string, the result will be invalid JSON. The system does not auto-escape. Use |trim or preprocess your data if needed.

10. Full examples

Filter products by year stored in a config tab

{ "filter": { "year": { "gte": "{{Config!B2}}" } } }
→ { "filter": { "year": { "gte": "2024" } } }

Use the most recent date in a column as a "since" parameter

https://api.example.com/events?since={{Log!A:last|date|fmt:iso_dt}}
→ https://api.example.com/events?since=2026-05-06T14%3A30%3A45

Mix US-formatted dates from a sheet into an EU-format API

{ "from": "{{Reports!A1|date_us|fmt:eu_d}}" }
→ { "from": "31/12/2025" }  (if Reports!A1 = 12/31/2025)

Tenant ID + auth token from config

URL:    https://api.example.com/tenants/{{Config!A1}}/users
Header: Authorization: Bearer {{Config!B1|trim}}

11. What is not supported

What you tried

Result

{{Sheet1!A1:B5}} (range)

❌ Only single cells supported.

{{My Sheet!A1}} (space, no quotes)

❌ Treated as literal text. Use {{'My Sheet'!A1}}.

{{Sheet1!A1|trim|U}} (render mode not first)

❌ Treated as literal text. Use {{Sheet1!A1|U|trim}}.

{Sheet1!A1} (single braces)

❌ Not recognized.

{{Sheet1!A1|fmt:iso_d}} (fmt without date input)

No-op — value passes through unchanged.

Destination is not Google Sheets

Placeholders sent as literal text, no warning.

12. What happens when something goes wrong

Situation

Behaviour

Invalid syntax / unknown filter

Treated as literal text — run continues, your API receives {{...}}.

Tab name doesn't exist

Run fails with a clear error naming the placeholder.

Cell is empty

Substituted as empty string "" + warning logged. Run continues.

Cell out of grid bounds

Substituted as "" + warning. Run continues.

:last on an empty column

Substituted as "" + warning. Run continues.

Numeric or date conversion fails

Run fails with a clear error.

Network failure reading the sheet

Retries up to 3 times with exponential backoff before failing.

13. Quick-reference cheat sheet

{{ <tab>!<ref> [|<filter>]* }}REF     : A1, AB42, A:last (case-insensitive)
TAB     : Sheet1, my_tab, 'Quoted Name', 'O''Brien'RENDER (must be 1st if used; default = F)
  F     formatted display value
  U     raw underlying valueSTRING
  trim  strip whitespace
  upper uppercase
  lower lowercaseNUMERIC
  int   to integer (errors on non-numeric)
  float to float   (errors on non-numeric)DATE INPUT
  date      auto-detect
  date_us   US (month first)
  date_eu   EU (day first)
  date_iso  strict ISO 8601DATE OUTPUT (no-op without a date input)
  fmt:day / fmt:month / fmt:year
  fmt:timestamp     Unix seconds (10 digits)
  fmt:timestamp_ms  Unix milliseconds (13 digits)
  fmt:serial        Sheets serial
  fmt:iso_dt / fmt:iso_d
  fmt:us_dt  / fmt:us_d
  fmt:eu_dt  / fmt:eu_d

Did this answer your question?