dusk bot
integrationsadd or update database rows

dusk botintegrationsnotion

match a notion record before adding another row

keep one booking in one row, even when its details change. a bot updates matching notion rows and creates missing ones from your incoming list.

by the dusk bot team · checked · how we made this

you get a result for each item. match on a unique reference: only the first batch of matches counts, and multiple matches can update the first or fail. preview the changes before writing.

pixel art: a green pixel bot, a blue pixel bot and a purple cat bot beside the Notion mark on a white tile, a folder of papers and a notebook, on a grassy meadow in front of green terraced fields, one saying "match by booking reference"

what it does

one list can contain old records and new ones. each incoming item carries its matching rule, creation values and update values. a missing match creates a row; a match updates one. the action returns a result for each item.

paste the database link and let the bot inspect its columns first. creation and update values can differ. tell it which fields to leave alone rather than hoping a broad import will guess.

when you would use it

  • keep registrations together. match each workshop booking by its reference.
  • refresh the equipment list. update known asset numbers and add new ones.
  • avoid supplier name mix-ups. use stable supplier codes in the directory.
  • correct attendance records. match the existing entries before adding extra rows for the same people.

try it

paste this into a chat with your bot

on alternate tuesdays at 16:45, read confirmed registration files added in the past two weeks to the workshop registrations folder. compare them with the notion booking database.

match only on booking reference. show proposed creates and updates here. stop when a reference is missing or repeated in the input or destination. ask before writing. after approval, report every item's result. never match by attendee name or retry the whole batch blindly.
when
alternate tuesdays at 16:45
needs
access to the registration files; notion read and write for the chosen database

what comes back looks like this (an example)

registration review

br-231, esme: update session choice in the existing row.
br-232, kaspar: create a registration; no match returned.
br-233: repeated reference; needs your decision.

no writes yet.

set it up

  1. allow only this tracker work. connect notion with the reads and writes the database needs.
  2. pick a unique reference. paste the database link and name a column such as booking reference.
  3. test both paths. preview one known match and one new reference before creating or updating.
  4. account for each result. list failed items separately. leave earlier successes out when retrying just the failures.

what it needs from you

inputrequiredwhat it is
itemsyesArray of items to upsert.
optionsnoOptions controlling upsert behavior.
database_idnoUUID of the Notion database (legacy).
data_source_idnoUUID of the Notion data source (preferred).

from composio's catalog for Notion (action NOTION_UPSERT_ROW_DATABASE, read 12 november 20264). your bot fills these in from what you tell it.

how dusk bot handles it

dusk bot counts Upsert database rows as a change: it alters something in Notion, and the sending setting does not cover it. a bot you allow only to read can never call it.

the permissions Notion asks for to run it: insert_content, read_content, update_content.

where it stops

  • a unique reference keeps the right row in reach. this action reads only the first batch of matches. broad matching can hide the row you need.
  • stop when a reference matches twice. the action may update the first or fail. a shared name is too weak a key.
  • a batch can half succeed. retrying successful items can repeat changes or create rows if the matching details changed.

try it in 2 minutes

  1. paste the destination database link
  2. choose its unique booking or asset reference
  3. preview one existing record and one new one
  4. review each result before retrying anything

quick checklist

  • every incoming reference is present and unique
  • each matching rule narrows to one record
  • new values fit the database columns
  • successful items stay out of a retry

mistakes people make

using an attendee name to match

two people can share it. use the booking reference instead.

replaying the entire failed batch

some items may already have succeeded. read each result and retry only what needs it.

questions

what does upsert mean for my tracker?

update a match, create when no match returns. each item can use different values for creation and update.

will it always prevent duplicates?

a stable reference is your best defence. weak matching and limited results can still hide an existing row. stop on ambiguity.

can i see which records failed?

yes, each item gets a result. ask for failures separately, then retry only items whose changes did not succeed.

sources

  1. dusk bot docs: files and apps
  2. dusk bot docs: routines
  3. dusk bot docs: a bot's computer
  4. composio, Notion toolkit (catalog version 20261101_00), checked 12 november 2026

drafted with ai help from the dusk bot docs and the sources listed on this page, then checked against them. if something here is wrong or out of date, write to [email protected].