Optional addonOptional addonadd-on metadata and round-tripped settings.
canonical runtime behavior should usually be read from top-level config
(form, flags, qrCard, operationalReports, etc.); this object
mostly exists so add-ons can reopen their last saved settings.
a smaller subset is still read directly by backend/admin/check-in flows.
Optional addon?: stringnon-ticket addon identifier (for addons like ct-status-addon)
Optional bcc?: string | string[]optional BCC recipients; stored either as CSV text or as an email array
Optional bodywhether emailBody should be interpreted as HTML
Optional bulkwhether bulk ticket download reports should be generated into canonical config
Optional businessvoucher-addon business label used to regenerate canonical ticket subtitle settings
Optional cardsource field for generating multiple cards per attendee; canonical effect is generated into qrCard.cardCountField
Optional casecustom attendee title format used by add-ons; canonical display still comes from top-level title formats
Optional checkselected check-in mode; still used by the check-in app and backend support hooks
Optional customsource field whose value becomes the attendee natural key / QR payload
Optional disablelegacy/compat fallback for hiding Google Wallet links in attendee emails
Optional disablewhether multi-ticket emails should hide the ZIP download link; only applies when cardCountField is set
Optional disablewhether generated ticket PDFs should hide the footer; canonical effect is generated into qrCard.noFooter
Optional docnon-ticket addon source document id
Optional docnon-ticket addon source document title
Optional email?: stringemail of the add-on/project owner; used by billing, invoices and support hooks
Optional emailbody template used when sending attendee emails
Optional emailattendee email field identifier used by add-ons/check-in tools
Optional emailadd-on UI hint confirming the chosen email field really looks like an email field
Optional emailattendee email field label shown in add-on/check-in email tools
Optional emailsubject template used when sending attendee emails
Optional externalexternal provider whose QR payloads need to be normalized before natural-key lookup
Optional findwhether the addon prefers explicit lookup-before-check-in; canonical effect is generated into flags
Optional form?: FormConfigpartner-events custom form editor state; top-level form remains canonical
Optional fromsender display name used for attendee emails
Optional gcustom Google Wallet attendee name format; falls back to top-level qrTitleFormat when unset
Optional gcustom Google Wallet event name; storing this opts the project into a dedicated class
Optional gcustom Google Wallet issuer name; storing this opts the project into a dedicated class
Optional gps?: booleanwhether Done scans should capture GPS; canonical effect is generated into top-level form/report config
Optional handlingforms-only handling gate used before creating/sending attendee output
Optional inlinelegacy/compat fallback for embedding QR images in attendee emails
Optional ip?: stringcreator IP captured by the add-on for support/analytics
Optional loc?: stringcreator location/country captured by the add-on for support/admin views
Optional maxsource field that caps allowed check-ins; canonical effect is generated into blockRules
Optional mode?: "sponsored" | "normal"current add-on pricing mode; some frontend/backend payment flows still read it directly
Optional nolegacy/compat fallback for stripping external links from attendee emails
Optional offlinewhether the offline case cache / sync workflow should be enabled; canonical effect is generated into flags
Optional passattachment filename stem for generated ticket PDFs
Optional replydefault reply-to address used for attendee emails regardless of sender transport
Optional senderwhich sender path should be used for attendee emails
Optional sessionwhether session-specific staff permissions should be generated into canonical config
Optional sheetnon-ticket addon sheet/tab name
Optional signature?: booleanwhether Done scans should capture a signature; canonical effect is generated into top-level form config
Optional smtpcustom SMTP settings; consulted only when senderPolicy is smtp
Optional connectionOptional enabled?: booleanOptional fromOptional fromOptional host?: stringOptional ignoreTLS?: booleanOptional password?: stringOptional port?: number | stringOptional replyOptional requireTLS?: booleanOptional secure?: booleanOptional username?: stringOptional sourcesource document / upstream record id used for support links and add-on reopening
Optional sourcesource document / form URL used in admin/support views
Optional title?: stringuser-facing title captured by the add-on; used by billing/invoice flows
Optional v?: numberadd-on payload/schema version used by some add-ons during migrations
Optional whatsapp?: { WhatsApp delivery settings round-tripped by Sheets/Excel add-ons
Optional chrome?: { Optional attachmentOptional includeOptional lastOptional messageOptional minOptional greenOptional attachmentOptional includeOptional lastOptional messageOptional minOptional selectedOptional phoneOptional defaultdigits only, without + or 00 prefix
Optional localOptional numbersOptional provider?: "waba" | "green-api" | "chrome"Optional waba?: { Optional lang?: stringOptional lastOptional whatsapplast selected phone-number column, shared across providers
Optional whatsappauto-reply template used by Sheets/Excel WhatsApp delivery flows
Optional wpsupported WordPress form plugin identifier for event-ticket projects
Optional addonsettings to push from API to Google addon local data stores
Optional customcustom HTML snippet to use as footer in emails
Optional disabledisable "Add to google wallet" link in ticket emails
Optional disabledo not send emails with MailApp (only Trak)
Optional disabledo not send emails with Trak (only MailApp)
Optional enablelegacy/compat fallback for multi-card ZIP download links in emails
Optional forceenable sponsored projects event when conditions are not met
Optional fullenable full import of cases (with naturalkey) using backend ui at /full-case-import
Optional handlingresponse is sent to trak and qr cards sent only when these values match
Optional inlineinsert QR image inside ticket email
Optional noavoid (external) links in email, because of strict email firewalls
Optional receiversend all tickets to this fixed email address
Optional supportshow support tools in the add-on UI
timestamp of last override update use iso timestamp so it can be human readable, like 2024-05-18T17:11
Optional agentextra data recorded for each agent
Optional agenterror message displayed when agentInputMaskRegex doesn't match
Optional agentconstrains agent names
Optional agenttags that can be assigned to agents to group them.
can be used to filter agent selection in a form (whitelist/blacklist).
extAgent is special (external agent with only scan rights and no report access)
Feedback is special (robot agents used to receive public feedback)
Optional agenttemplates to quickly setup tags and steps for new agents (new agent form)
Optional aggregatedfields for which the value in reports (all, step, assignee) is a list of all value in history
Optional allperiod length for AllCases
Optional assignationfor assigned cases: steps where the agent must scan to handle the assignment
Optional assignationstep that assigns the case to the scan author
Optional assignedfield that sets the agent responsible for this case
Optional assignedfield that sets other agents assigned to help the assignee (used for notifs)
Optional assigneefield that sets the agent responsible for this case by matching the bulk client (field value) tags
Optional assigneeany case that reaches these steps is automatically assigned to the first agent with the associated tag
Optional autoif a free-form case lookup matches this,
apply naturalKeyTransformations and submit
a findCase query instead
regex expression to match
Optional flags?: stringregex matching flags, 'i' by default
Optional autoautomatic processing applied to incoming scans
Optional autoAt creation step, save the first bulk client tag to attachments, using this attachment template
Optional internal?: booleanOptional autoAt creation step, save the natural key to attachments using this attachment template
Optional internal?: booleanOptional blockconditions under which an incoming scan is rejected and discarded
Optional brandingcolor used to distinguish the process in a listing, and added to top app-bar
Optional bulkfield that the bulkclients table entries map to (used for client column in reports) applications with this field set a considered to be using bulk clients
Optional bulkextra data recorded for each bulkclient
Optional bulkerror message displayed when bulkClientInputMaskRegex doesn't match
Optional bulkconstrains bulkClient names
Optional bulksteps at which a bulkClient should be set, either because already set or set but this step's attachments unless the app sending the events doesn't handle failures, prefer reqAtt block rule to this
Optional bulktags used to organize bulk clients into groups can be used to filter agent selection in a form (whitelist/blacklist).
Optional bulkformat string used for page title when exporting bulkclient-indexed data QR PDF
Optional bulkformat string used for page subtitle when exporting bulkclient-indexed data QR PDF
Optional bulksettings for auto-creating multiple cases
with values of field target taken from multiple values set for field source
(only field kinds from Created step attachments are allowed)
field that is automatically created for each source value (NOTE: values of this field can't be edited later)
attachment.dataType to use for the target field; this should be idempotent under asUpdatableEditor()
Optional camerawhen generating code, main buttons (except Created)
are useless because they don't have the code to work
with, thus hidden. exceptions (which must be there
because they use camera) are listed here. this is
typically the done step (done in the fields)
Optional casefield that sets the case code badge color (to denote priority, category, etc.)
Optional casefor each agent tag listed in keys, whenever any such agent creates a case, assign the corresponding tags to the case
Optional caseperiod length for case groups listing
Optional caseValues computed from case history data and shown at the top of case views
Optional caseused to format case readable names in email notifications
(only field kinds from Created step attachments are allowed)
example: {Nom} {Prénoms}
Optional checkfields for which a check-in scanner should be used. the check-in scanner continually saves scans without leaving the scanner screen, and shows the latest scans
Optional contact?: stringfree-form contact info, provided on application creation
Optional correlationattachment field copied into the internal correlationId attachment on case creation
example: Référence du pli
Optional customCustom admin actions, triggered from the UI and handled by the backend worker
Optional customset by backend: did we already send an email to user about custom add-on check-in?
Optional customused at the bottom of the UI for quick-n-dirty whitelabeling
custom contact label
custom contact url
Optional customlist of custom (dedicated backend stored proc) reports (download & display)
Optional defaultagent template selected by default in new agent form
Optional defaultdefault 2-letter language code (used on the server side)
Optional delaythresholds for acceptable delays, in number of working days, per step; used for visual highlighting
Optional description?: stringthe description provided on process creation, used to help the client setup the process
Optional directform fields (names) used to directly notify people on case move
Optional discount?: numberdiscount percent for add-on payment (0-100)
Optional discountdiscount code for payment add-on (shown to user and received in paypal notif)
Optional displayedcase fields whitelist, per agent tag; currently only used in FindAndCheckIn
Optional donedone scans with these fields are counted for the indicators report
Optional externaltenant-routing config for ct-preparer's human-login (external app accounts) flow
Optional extidUse the value of this attachment to replace the previous case extid
Optional extraselect fields to add to the
AllCases/CustomReport/CasesAtStep/PerClientStepPdfReport filters
(mostly useful when agent is used for a custom field)
Optional feedback?: FeedbackSettingsFeedback UI config
Optional fileprefix to use for file links when rendering in casehistory
Optional flagwhen these fields all have false-ich values, the case is considered empty for filtering purposes; this is used for situations like pickups where nothing was collected, but we have a record to prove the attempt happened.
Optional flags?: { feature flags
Optional agentenable agent stats report (it proved confusing for early clients)
Optional agentenables agents to setup push notifications for process events
Optional alertalert agents when a scan failed to read gps because denied
Optional allowallow case lookup in focusedUiForNonAdmins mode
Optional allowthis process expects duplicated natural keys, the latest entry will be used
Optional assigneddoes this application assign cases to agents? (so they can check a report of cases assigned to them)
Optional bulkdisplay bulk client/agent creation tools for all admins
Optional caseuse named case groups
Optional casedisplay how many times each step was found in history in case view
Optional correlationuse correlationId as readableCode in UI display
Optional debugsend gps failure messages back to server
Optional debugadd technical debug logging for rules that don't match
Optional displayafter a creation scan is validated, show case view page (done automatically for genCode)
Optional emails?: booleanallow agents to set their emails: used for notifs. caseTitleFormat is required when this is set
Optional enableenable the Created email notification; disabled by default to avoid unexpected high-volume alerts
Optional externalallow giving external agents access to specific cases
Optional extraallow extra steps in agent creation form
Optional findshow find-and-check-in button on homepage
Optional finein code reader, allow cycling through all cameras (instead of default front/back)
Optional focusedused minimal UI for non-admin agents (designed for singe-application devices)
Optional formallow admins to update or remove existing form list entries (in addition to adding new entries)
Optional fullallow access to the backend-hosted UI for importing cases (naturalkey)
Optional genallow case code generation
Optional genallow readable code generation (in the backend, consecutive integers)
Optional hidedo not show case title in CaseView (caseSummaries can be more readable)
Optional hidedo not show short case code in reports, etc.
Optional hidedo not display the stats section in the reports tab
Optional homeput gps lookup widget on home page
Optional homedisplay reports on home tab (assigned to me, my summary)
Optional lockedinstruct API config modules (like the Forms/Sheets addons) to not change config for this process
Optional lockeddo not update config.qrCard with local addon config in Google Apps Script (preserve custom card)
Optional manualforce use of manual detection of front/back camera this tends to work better than facingMode constrainst on phones with multiple back cameras, but is artisanal
Optional manualinstructs the google workspace addons to not automatically generate (overwrite) qrTitleFormat and qrSubtitleFormat
Optional naturalenable natural key scan in the reader + mapping on the server
Optional nfcenable nfc tag uid use as natural key; requires naturalKey:true
Optional nodisable agents in public app reports
Optional nothis (parcel application) doesn't use an assignment (PausedStepID) step
Optional nodisable filterable select editor use
Optional nodo not show notes in reader form
Optional noon the home tab, hide the My summary report
Optional noon the home tab, hide the Assigned to me report
Optional nodisable field for manually entering the scanned UUID code (useless clutter when using micro PDF format, etc.)
Optional nodisable manual data entry in QR forms (everything comes from the scanned QR; this hides the form to users)
Optional nodo not put scans into pending moves (reject them right away)
Optional nodisable rafale in case scanner (auto-submit every step)
Optional nodisable rafale in case scanner at Created step (auto-submit)
Optional nodon't use the default wasm-based QR reader (fallback to JS)
Optional offlineshow button for caching case data for offline lookups
Optional operationalshow operation view reports as home reports
Optional optionalwhen auto-assignation by tag (bulkclient/step) fails, don't raise 'No agent_id extracted by...' api-err, just leave the case unassigned
Optional publicenable Public app access to cases (without a bulkclient key)
Optional publicfor bulk clients, show a reminder to activate notifs if notifs not active on bc reports
Optional rafalein case lookup, put camera in rafale mode (this makes single searches require confirmation)
Optional readonlyforbid case data removal
Optional readonlyfor non-admins, forbid case data removal
Optional resolveapply automatic entity (agent, bulkclient, select fields) resolution for all scans
Optional restrictedread access to scan (form) data should be restricted for this application (see canReadAllCasesAgentTag, canUnlockAllCasesAgentTag and caseCreationAutoTags)
Optional uuidmarks this process as having UUID-valued natural keys, which influences scanned value resolution
Optional focusedapply focusedUiForNonAdmins (if enabled) only to agents with these tags,
no matter if they are admin or not
Optional form?: FormConfigscan form definition per step
Optional formused to disable some form fields based on agent tags
Optional formglobal validation rules that involve multiple fields; currently only checked client-side
Optional gclass suffix (generated by the backend) for Google Wallet
Optional ghero image URL for the Google Wallet card
Optional gpsfield that records gps (gps lookup report)
Optional gpsfield that records gps subject/label (gps lookup report)
Optional gpsstep at which gps label is recorded into gpsLabelField (gps lookup report)
Optional gpsfield that records gps step notes/comments (gps lookup report)
Optional gpsstep at which gps data/notes is recorded into gpsField/gpsNotesField (gps lookup report)
Optional homeperiod length for reports on the home page
Optional inat this step, cases (parcels) are considered inflight
Optional jotformlegacy top-level copy of the published Jotform URL, kept for old Jotform-backed processes
Which kind of item is tracked by this application?
Optional logo?: stringurl to https png logo (shown in the public app's header) you can use https://share.darkaa.com/ (make sure it doesn't expire!)
Optional makewhenever a case reaches these steps, apply the readonlyCase tag to them
Optional metabasemetabase dashboards that can be added to operational reports
keyed by internal id as used in the "metabase" kind of operationalReports
Optional height?: numberheight of the host iframe, 800 (px) by default
metabase id, can be found in the url on https://mb.int.trak.codes/
Optional naturalapply these regex transformations before using user-supplied naturalKeys; the transformatons are applied in definition order NOTE: this applies to scanned codes, not to codes manually entered into a field that happens to be mapped to a naturalKey (use an inputMask for that)
Optional naturaluse the value of this attachment at this step to update the naturalKey
Optional noSome steps are only used on items located via search (like when changing the item's QR code). It doesn't make sense to display them on the home page.
Optional numericfields to sum and show in indicators report
Optional objective?: stringthe objective (tracking scenario) provided on process creation
Optional operationalreports to show in the operational (top) view
Optional payset by backend: last time add-on user opened the payment page
Optional paypalset by backend: last time add-on user opened the PayPal payment page
Optional pendingconditions under which an incoming scan is put aside, waiting for a regularization scan
Optional polarset by backend: last time add-on user opened the Polar payment page
Optional publicalternative public url to use for public QR scans; the cextid is forwarded to it as fc
Optional publictenant-specific config for the standalone public portal hosted on portal.trak.codes
Optional publicperiod length for bulk client reports in the public app
Optional publicreport columns for public app (defaults to reportFields)
Optional qrsettings for generated QR cards from cases (data-qr)
Optional applyapply generic color (colorFormat) to page background
Optional applyuse the color (colorFormat) entry of the record as index
in the qrCard.bgUrlMap to get the background image
Optional applyapply generic color (colorFormat) to title text?
Optional bgbackground color, in case background image is not defined
Optional bgfor inline bgUrl (data-url or svg), number of horizontal repetitions
Optional bgfor inline bgUrl (data-url or svg), number of vertical repetitions
Optional bgurl to download background from
Optional bgmap of color name (colorFormat) to background URL
Optional cardfor multi-card configurations, the Created form field providing the page count.
this also makes a groupIndex field available for qrTitleFormat
Optional codetext color for code
Optional colorgeneric color format, same syntax as caseTitleFormat
Optional customuse a custom Google Wallet design (will lazily create gWalletClassSuffix)
Optional designer?: stringapp used to design this card (vibes for https://qr-editor.vibes.darkaa.com/)
Optional extendeduse extended attribution, with explicit ad (used for Darkaa-sponsored events)
Optional footerbackground of footer content (transparent by default)
Optional format?: "default" | "loyalty" | "advanced" | "credit-card" | "vertical-credit-card"qr card preset design
Optional grid?: { for format=advanced, tiles each configured page template into a sheet grid.
page/text/qr coordinates stay relative to the grid cell, not the full sheet.
Optional cellOptional cellOptional gapX?: numberOptional gapY?: numberOptional marginOptional marginOptional marginOptional marginOptional logourl to download logo from
Optional noskip the attribution link (QR code ticket)
Optional noskip the short code in the footer
Optional noskip the whole footer
Optional pagefor format=advanced, selects a page orientation
Optional pagefor format=advanced, selects a page size
Optional pages?: { pages spec for advanced format, use https://darkaa.com/canvas-editor.html
Optional qr?: { explicit QR position and size, use https://darkaa.com/canvas-editor.html
Optional dark?: stringoptional dark QR module color override
Optional light?: stringoptional light QR background color override
Optional qrlogo image to be drawn at the center of the QR
scale of the logo (0 to 1) relative to QR
url to download qr logo from
Optional qra QR scale factor between 0 and 1; position is auto-shifted (center)
Optional renderer?: "pdfmake" | "typst"engine to use to render the PDF, defaults to pdfmake
Optional suba positive, real scale factor applied to (multiline) subtitle
Optional subtitletext color for subtitle
Optional subtitlesubtitle format set by addon user, same syntax as caseTitleFormat
Optional titletext color for title
Optional titletitle format set by addon user, same syntax as caseTitleFormat
Optional qrformat for printing QR codes
Optional qrformat string used for page subtitle when exporting case codes as PDF (autogenerated or set by admin)
Optional qrformat string used for page title when exporting case codes as PDF (autogenerated or set by admin)
Optional readableused to format generated readable codes
example: N° {code}
if empty, the code is not displayed
Optional reader1-D and 2-D label formats recognized by the wasm code reader
Optional readonlyif the overlap between agent tags and case tags is included here, then the agent can add/remove the readonlyCase tag to/from the case
Optional readonlysteps for which removal or update is forbidden
Optional repeatedsteps for which multiples scans are expected per case decides ONLY which scan buttons are shown on a CaseView
Optional reportperiod length for (full, client, agent) stats reports
Optional reportreport columns for institution app
Optional resetused to interpret some block rules
Optional scheduledbackground worker actions interpreted from config, without changing case state
Optional searchperiod length for CaseLookup
Optional selfperiod length for AgentReport
Optional source?: stringfrom which marketing channel did we get this prospect?
Optional stepperiod length for CaseCurrentStep
all steps for which cases can be scanned standard ones are Created, Paused, Done
Optional translationregex substitutions on translations keyed by short lang name, then namespace, then regex.
for example, use this to replace "client" by "centre" everywhere:
"fr": {
"all": {
"\\bclient\\b": "centre"
}
}
Typical app-wide words to replace: client, agent, dossier/case. This is case sensitive, so you might need another entry for uppercase.
Optional translations?: TranslationConfigcomplete translations keyed by short lang name, then namespace, then translation key
(fr|en).common.step(Created|Paused|Done|...) for step labels(fr|en).common.stepAction(Created|Paused|Done|...) for step button labels (optional for custom steps)Optional uiused to format case readable names in admin UI
(alls fields from all step attachments are allowed, later fields overwrite earlier ones)
example: {Nom} {Prénoms}
Optional updateafter how many minutes can a non-admin agent update a scan they created? use -1 to remove the time limit
ISO date string after which new check-ins are no longer allowed (currently not enforced, but documents long term, regular use add-ons)