Skip to main content
Appenda
Sign inDownload

Move and match data between tables.

Appenda has three built-in table methods. Each one is an enrichment field: you create it on a table, run it, and read its cells, the same way as any other enrichment.

MethodNameWhat it does
send_rowSend row to tableWrites this row, or the fields you choose from it, as a row of another table.
send_listSend list to tableWrites each item of a JSON list in this row as its own row of another table.
find_rowsFind rows in tableFinds the rows of another table whose field matches this row's value.

All three are free and spend no credits. They run on your desktop and in the Cloud, and they need no key.

Find the methods

List integrations returns Appenda like any other provider. It is always connected and takes no credential:

curl https://api.appenda.app/v1/integrations \
  -H "Authorization: Bearer $APPENDA_API_KEY"
{
  "provider_id": "appenda",
  "name": "Appenda",
  "connection": "built_in",
  "connected": true,
  "methods": [
    {
      "id": "send_row",
      "label": "Send row to table",
      "kind": "row_action",
      "category": "tables",
      "runs_on": "local_and_cloud",
      "price": "free"
    }
  ]
}
FieldMeaning
connectionbuilt_in: always connected, never given a key. credential: connect your own key first.
runs_onlocal_and_cloud: runs on your desktop and in the Cloud. cloud: runs only in the Cloud.
pricefree: never spends credits. credits: spends Appenda credits. null for other providers.

Appenda never appears in List credentials. To see a method's inputs and its schema_version, call Get an integration action, for example GET /v1/integrations/appenda/actions/send_row.

Send rows to another table

Create a Send row field on the source table. target_table is the table the rows go to, and mapping says which field fills which target field. Send the schema_version that Get an integration action returns:

curl https://api.appenda.app/v1/tables/tbl_67ad65ba34a7bbfc643711b8531cba3f/enrichment-fields \
  -H "Authorization: Bearer $APPENDA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Send to Accounts",
    "provider": "appenda",
    "action": "send_row",
    "schema_version": 1,
    "inputs": {
      "target_table": {"value": "tbl_5246f913f71a9485a05033249a6dc75e"},
      "mapping": {"value": [{"from": "fld_1e57b877a78db86124936f976015f646", "to_field_id": "fld_a6806b5f732319fbc6a15bafac71f658"}]},
      "match_field": {"value": "fld_a6806b5f732319fbc6a15bafac71f658"},
      "overwrite": {"value": "fill_empty"}
    }
  }'
InputMeaning
target_tableRequired. A table in the same workspace.
mappingRequired. Up to 256 pairs of a source field (from) and the target field it fills (to_field_id).
match_fieldOptional. A target field whose value finds the row to update instead of adding a new one.
overwriteOptional. supplied (the default) replaces the mapped fields; fill_empty fills only empty ones.

A re-run updates the row it wrote before instead of adding another one.

Send a list to another table

Send list turns each item of a JSON list into its own row: contacts from an AI field, for example. list reads a JSON field of the source table, and item_key names the paths tried in order for the value that identifies each item:

{
  "name": "Send contacts",
  "provider": "appenda",
  "action": "send_list",
  "schema_version": 1,
  "inputs": {
    "list": {"field": "contacts", "path": "/contacts"},
    "target_table": {"value": "tbl_5246f913f71a9485a05033249a6dc75e"},
    "item_key": {"value": ["email", "linkedin_url"]},
    "mapping": {"value": [{"from": "email", "to_field_id": "fld_338c2bfa9bb89f2b984226fc02164a31"}]}
  }
}

Here from is a dotted path inside each item. A row sends at most 100 items. Run it again after a sixth contact appears and you get one new row; the five it sent before are updated or left unchanged, never duplicated.

Find matching rows

Find rows looks up this row's value in a field of another table. Domains, URLs, emails and profile URLs are compared after normalizing, so northbeam.io matches https://www.northbeam.io/:

{
  "name": "Existing account",
  "provider": "appenda",
  "action": "find_rows",
  "schema_version": 1,
  "inputs": {
    "value": {"field": "domain"},
    "target_table": {"value": "tbl_5246f913f71a9485a05033249a6dc75e"},
    "target_field": {"value": "fld_a6806b5f732319fbc6a15bafac71f658"},
    "return_fields": {"value": ["fld_582332f7866237ee3a5caf97bcbfc9eb"]},
    "limit": {"value": 10}
  }
}

Each cell answers found, the exact count, and up to limit matched rows (1 to 10, 10 by default). It reads "Found" with the count, or "Not found". Find rows only reads.

Run the field

Start a run the same way as any enrichment, and leave the credential out:

curl https://api.appenda.app/v1/runs \
  -H "Authorization: Bearer $APPENDA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind": "enrichment", "table_id": "tbl_67ad65ba34a7bbfc643711b8531cba3f", "field_id": "fld_a8c67e33f4b27927f0d28612b4472f0a", "options": {"force": false, "mode": {"kind": "all"}}}'

The run answers 202 and works in the background; check it with Get a run. Read the results in the field's cells with List records. A Send cell reads "Rows sent" with how many rows it created, updated or left unchanged.

A run writes all of its rows in one step and adds one entry to the history of each table it changes. If it fails part way, it writes nothing.

Permissions and limits

  • Same workspace only. A target table in another workspace answers 404, exactly like a table that does not exist.
  • Your role decides. A Send field needs write access to the target table; Find rows needs read access. Approvals follow your role's rules.
  • No credential. A credential_id or credential_source on a field answers 422 credential_not_applicable.
  • No loops. A field that would send rows back into a table that feeds it, such as a table sending to itself, answers 422 table_enrichment_cycle.
  • Bounds. 100 items per list, 256 mappings and 10 returned matches per row.

See Errors for every code.

FAQs

Do table methods spend credits?
No. Send row, Send list and Find rows never spend credits, on your desktop or in the Cloud.
What happens when I run a Send field twice?
The second run updates the rows the first one wrote, or leaves them unchanged. It never adds duplicates.
Can I send rows to a table in another workspace?
No. The target table must be in the same workspace as the source table.