Watchtower · change tracking
Know when a drug register changes.
Registers move every day — new products, withdrawn packs, price edits, recalls. Every change we ingest is recorded with its source and date, so you can see what moved and when, instead of re-importing everything to find out.
- RecallRecall noticeSwissmedic recalls
- AddedCyproteron und Estrogen + Sertindole interactionePHA interactions
- UpdatedRecall D-0972-2018 · VALSARTAN AND HYDROCHLOROTHIAZIDE · status ongoingopenFDA drug recalls
- UpdatedZubsolvLyfjastofnun / IMA
- UpdatedGLIMEPIRIDE VIATRIS 3 mg, compriméBDPM CIS_COMPO (ATC bridge)
- UpdatedAmlodipine CT 10 mg, tablettenCBG-MEB
20.8M
changes recorded
50
sources watched
4
change types
How a change is made
Staged, checked, promoted — then recorded.
Each source lands in its own staging table first. Only rows that pass their checks are promoted, and every promotion writes one row per changed record to the change log.
- A staging and a quarantine table per source; production sees promoted rows only
- A run that fails its checks never replaces good data — the source is flagged stale instead
- Each change keeps before, after, source and time
Change types
Four kinds of change. Each one dated.
20,850,573 changes recorded since ingestion began. The newest of each type, as of this page’s last refresh:
insertAdded
A product, pack, price or record appears in a register for the first time.
Latest: · ePHA interactions
updateUpdated
A field moved — a price, a status, a name, a pack. The row keeps both before and after.
Latest: · ePHA interactions
deleteRemoved
A record left the register it came from — a withdrawn pack, a delisted product.
Rare — recorded when a source drops a record
recallRecall
A recall or safety notice published by the regulator, tied to the product where we can match it.
Latest: · Swissmedic recalls
Be told
Stop re-importing. Ask what moved.
Follow a medicine in the console, poll the change feed with a cursor, or have us POST each batch to your URL, signed.
- The console’s Watchtower feed — no code
GET /v1/changes?since=…— cursor-paged, on every plan- Signed webhooks (HMAC-SHA256) from the Starter plan, $99/month
GET /v1/changes?since=2026-09-01T00:00:00Z&limit=100 Authorization: Bearer dd_live_…
POST https://your-app.example/hooks/drug-database x-drug-database-signature: sha256=<hex> content-type: application/json
Request shapes from the API and webhook docs; values are placeholders.
When a source drifts
Stale is flagged, never silent.
When a publisher changes its file’s shape, the run fails its checks, promotion stops, and the last good data keeps serving — flagged on every response that uses it.
- 01
Detect
The run fails its shape checks; failing rows go to quarantine.
- 02
Hold
Nothing is promoted. The last good rows stay in production.
- 03
Flag
schema_state turns stale in _meta.sources, with the last sync date.
- 04
Recover
The parser is fixed, the source re-runs, and the changes land in the feed.
What counts as a change?
How quickly does a change show up?
Which plan includes the change feed and webhooks?
Is a recall in the feed a safety alert?
Follow changes
Last change seen: Swissmedic recalls, 4 Nov 2026.
Follow the registers you care about from a free account — the change feed never uses a lookup.
Free to try · 10 lookups in total · No card required