CellAlert

FileMaker integration · Beta

Add CellAlert to FileMaker

A Web Viewer panel turns date fields in your FileMaker records into monitored deadlines — with email & calendar reminders, even when FileMaker is closed.

Web Viewer URL

https://filemaker.cellalert.app
Open panel

Requires FileMaker Pro 19+ (Web Viewer with JavaScript) and a CellAlert account.

Set up in 4 steps

  1. 1Place a Web Viewer on the layout you want (e.g. “Customers”).
  2. 2Set the calculated formula below as the “Web Address” — it passes the current record (primary key, field, date) to CellAlert. Adapt the table and field names to your schema.
  3. 3Optionally add a FileMaker script “CellAlert Saved” that stores the returned reminder_id on the record — so the link is kept.
  4. 4Sign in once in the panel with your CellAlert account. Done — confirm the date and it's a monitored deadline.

Web Viewer formula

Enter this calculated “Web Address” into the Web Viewer. Replace “Kunden”, “Vertragsende” and “_pk” with your table, date field and primary key.

"https://filemaker.cellalert.app/?" &
"title="     & GetAsURLEncoded ( Kunden::Name & " — Vertragsende" ) &
"&due="      & GetAsURLEncoded ( Kunden::Vertragsende_ISO ) &   // yyyy-mm-dd
"&file="     & GetAsURLEncoded ( Get ( FileName ) ) &
"&table="    & GetAsURLEncoded ( Get ( LayoutTableName ) ) &
"&recordId=" & GetAsURLEncoded ( Kunden::_pk ) &               // dein Primärschlüssel
"&field=Vertragsende" &
"&solution="  & GetAsURLEncoded ( Einstellungen::SolutionID ) &  // stabile Lösungs-ID
"&callbackScript=CellAlert Saved"

Date as ISO (yyyy-mm-dd)

CellAlert expects the date as yyyy-mm-dd. If your field is formatted differently, convert it with this helper and use it as “due=”.

Year ( Kunden::Vertragsende ) & "-" &
Right ( "0" & Month ( Kunden::Vertragsende ) ; 2 ) & "-" &
Right ( "0" & Day ( Kunden::Vertragsende ) ; 2 )

Stable link (important)

To keep a deadline firmly linked to the record — even if the FileMaker file is renamed or copied — pass a stable solution ID (the “solution” parameter). Create a global text field “SolutionID” and set it once via auto-enter/script to a UUID. CellAlert uses it to recognise the record and update the existing deadline instead of creating a duplicate.

If ( IsEmpty ( Einstellungen::SolutionID ) ;
     Get ( UUID ) ;
     Einstellungen::SolutionID )

Callback to FileMaker (optional)

After saving, CellAlert calls your “CellAlert Saved” script with { reminderId, recordId, field } as the script parameter. Read it with Get(ScriptParameter) and store the reminderId on the record — this firmly links the deadline to the record and updates it on re-open instead of creating a duplicate.

Stage 2

Automatic sync — without the panel open

So a deadline updates automatically when someone changes the date in FileMaker (or deletes the record) — even without opening the panel — a FileMaker script trigger pushes the change straight to CellAlert.

  1. 1. Create an org API token (owner only) and store it in a field “CellAlertToken” — the token authorises background access without a login.
  2. 2. Create the “CellAlert Sync” script (below) and adapt the table/field names to your schema.
  3. 3. Attach the script as an “OnRecordCommit” layout trigger (Layout Setup → Script Triggers). When the date is empty it automatically sends “delete”.

Ingest endpoint

https://evpwrncmodbakhseyxdl.supabase.co/functions/v1/fm-ingest

Sync script (FileMaker)

Builds the JSON and sends it via “Insert from URL” to the endpoint. The token comes from “Einstellungen::CellAlertToken”.

# Script „CellAlert Sync"  ·  Trigger: OnRecordCommit
Set Variable [ $url ; "https://evpwrncmodbakhseyxdl.supabase.co/functions/v1/fm-ingest" ]
Set Variable [ $body ; JSONSetElement ( "{}" ;
   [ "action"       ; If ( IsEmpty ( Kunden::Vertragsende ) ; "delete" ; "upsert" ) ; JSONString ] ;
   [ "solution"     ; Einstellungen::SolutionID ; JSONString ] ;
   [ "file"         ; Get ( FileName ) ; JSONString ] ;
   [ "table"        ; Get ( LayoutTableName ) ; JSONString ] ;
   [ "field"        ; "Vertragsende" ; JSONString ] ;
   [ "recordId"     ; Kunden::_pk ; JSONString ] ;
   [ "title"        ; Kunden::Name & " — Vertragsende" ; JSONString ] ;
   [ "due"          ; Kunden::Vertragsende_ISO ; JSONString ] ;
   [ "reminderDays" ; 14 ; JSONNumber ]
) ]
Insert from URL [ With dialog: Off ; Target: $result ; $url ;
   cURL options:
     "-X POST" &
     " -H \"Authorization: Bearer " & Einstellungen::CellAlertToken & "\"" &
     " -H \"Content-Type: application/json\"" &
     " -d @$body" ]