Salesforce
Salesforce Sync & Cache Audit
This page is the full technical audit of how Forge keeps your Salesforce data in sync — every Salesforce object across Blackthorn's Events, Payments, Fundraising, and Base packages, cross-referenced against what Forge actually caches, how fast, and what to check if something looks like it isn't syncing. It's more detailed than the summary in the Sync & Caching section above — this is the reference version for anyone who wants the full picture, including your own technical/admin team.
As of
This audit reflects Forge's sync/cache configuration as of 2026-09-22. Object names below are the real Salesforce API names from Blackthorn's managed packages, so this page intentionally keeps technical identifiers rather than only plain-language names.
How sync & caching actually works
Forge has three structurally distinct read-cache mechanisms, plus one shared write path. None of them are bidirectional — every write goes through a separate path and then (sometimes) explicitly invalidates a cached row.
- A generic, tenant-wide Salesforce-to-Postgres object cache. This is where the large majority of cached objects land (86 of them as of 2026-09-22 — see the table below). It is read-only from Salesforce's perspective — this path never writes back to Salesforce.
- Feature-specific computed-metrics caches (dashboard and pipeline/ROI summaries) — these don't store raw Salesforce records; they run live queries against Salesforce on each refresh and persist a computed summary.
- Short-lived, Redis-only response/lookup caches (event basics, display names, session-meta, related-lists, edit-access) — invalidated explicitly whenever the underlying data is written.
- The write path (Forge to Salesforce): a synchronous path for most writes, and a durable, asynchronous write-through queue for a defined set of objects (mainly Payments, Donations, Fundraising, and Auctions) that's drained by a background reconciler.
Login/session warm-up: whenever a user with a session active in the last 30 days causes Forge to boot up, all 86 cached objects get an incremental sync attempt for that tenant, bounded per-tenant so it can't run indefinitely. This is a tenant-wide warm, not scoped to the person logging in — today it's all-or-nothing across every event and time range for that tenant.
| Tier | Refresh cadence |
|---|---|
| Hot | Every 5 minutes, plus login warm-up |
| Warm | Every 10 minutes, plus login warm-up |
| Cold | No dedicated cadence — only login warm-up and the full 6-hour sweep touch these |
| Full sweep (all 86 objects, every tenant) | Every 6 hours |
Portal (Contact-authenticated) reads go through a single, strictly read-only chokepoint that re-reads the same cached rows with an owner-field check, so a donor or bidder portal only ever sees their own records.
What's cached, and how fast
Every object below is cached in one shared Postgres table, keyed per tenant and record. Salesforce is always the source of truth — Forge never writes to this cache from a user action, only from sync jobs.
| Cache key | Salesforce API name | Tier | When it refreshes |
|---|---|---|---|
| Event | conference360__Event__c | Hot | login-warm, 5min, 6h |
| Session | conference360__Session__c | Hot | login-warm, 5min, 6h |
| Ticket | conference360__Event_Item__c | Hot | login-warm, 5min, 6h |
| Order | bt_stripe__Sales_Document__c | Hot | login-warm, 5min, 6h, + on-demand full refresh |
| Transaction | bt_stripe__Transaction__c | Hot | login-warm, 5min, 6h, + on-demand full refresh |
| Form Submission | conference360__Form_Submission__c | Hot | login-warm, 5min, 6h |
| Sponsor | conference360__Sponsor__c | Hot | login-warm, 5min, 6h |
| Speaker | conference360__Speaker__c | Hot | login-warm, 5min, 6h |
| Attendee | conference360__Attendee__c | Hot | login-warm, 5min, 6h |
| Form | conference360__Form__c | Warm | login-warm, 10min, 6h |
| Form Element | conference360__Form_Element__c | Warm | login-warm, 10min, 6h |
| Form Element Condition | conference360__Form_Element_Condition__c | Warm | login-warm, 10min, 6h |
| Invoice Line | bt_stripe__Line_Item__c | Warm | login-warm, 10min, 6h, + on-demand single-invoice fallback |
| Budget Expense | conference360__Budget_Expense__c | Warm | login-warm, 10min, 6h |
| Session Speaker | conference360__Session_Speaker__c | Warm | login-warm, 10min, 6h |
| Attendee Group | conference360__Attendee_Group__c | Warm | login-warm, 10min, 6h |
| Attendee Data Message | conference360__Attendee_Data_Message__c | Warm | login-warm, 10min, 6h |
| Event Asset | conference360__Event_Asset__c | Warm | login-warm, 10min, 6h |
| Payment Gateway | bt_stripe__Payment_Gateway__c | Warm | login-warm, 10min, 6h |
| Campaign | Campaign (standard) | Warm | login-warm, 10min, 6h |
| Sponsor Benefit | conference360__Sponsor_Benefit__c | Warm | login-warm, 10min, 6h |
| Discount | conference360__Discount__c | Warm | login-warm, 10min, 6h |
| Donation | bt_fundraising__Donation__c | Warm | login-warm, 10min, 6h (display only — donation writes always go live via sf-outbox.ts, never through this cache) |
| Portal Contact Role | conference360__Portal_Contact_Role__c | Warm | login-warm, 10min, 6h (infra only — no portal read consumes it yet) |
| Auction Registration | bt_fundraising__Auction_Registration__c | Warm | login-warm, 10min, 6h |
| Session Attendee | conference360__Session_Attendee__c | Warm | login-warm, 10min, 6h |
| Table | conference360__Table__c | Cold | login-warm, 6h only |
| Seat | conference360__Seat__c | Cold | login-warm, 6h only |
| Code | bt_stripe__Code__c | Cold | login-warm, 6h only |
| Custom Content | conference360__Custom_Event_Tab__c | Cold | login-warm, 6h only |
| Event Group | conference360__Event_Group__c | Cold | login-warm, 6h only |
| Logistics Entry | conference360__Logistics_Entry__c | Cold | login-warm, 6h only |
| Logistics Pillar Status | conference360__Logistics_Pillar_Status__c | Cold | login-warm, 6h only |
| Rule | bt_base__Rule__c | Cold | login-warm, 6h only |
| Rule Condition | bt_base__Rule_Condition__c | Cold | login-warm, 6h only |
| Form Big List Group | conference360__Form_Big_List_Group__c | Cold | login-warm, 6h only |
| Form Big List Option | conference360__Form_Big_List_Option__c | Cold | login-warm, 6h only |
| Fee | bt_stripe__Fee__c | Cold | login-warm, 6h only |
| Event Settings | conference360__Event_Settings__c | Cold | login-warm, 6h only |
| Data Dictionary Group | bt_stripe__Data_Dictionary_Group__c | Cold | login-warm, 6h only |
| Waitlist | conference360__Waitlist__c | Cold | login-warm, 6h only |
| Event FAQ | conference360__Event_FAQ__c | Cold | login-warm, 6h only |
| Event Content | conference360__Event_Content__c | Cold | login-warm, 6h only |
| Staff | conference360__Staff__c | Cold | login-warm, 6h only |
| Contact | Contact (standard) | Cold | login-warm, 6h only (tenant-wide, not event-scoped) |
| Session Staff | conference360__Session_Staff__c | Cold | login-warm, 6h only |
| Keyword | conference360__Keyword__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Translation | bt_base__Translation__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Visibility Rule | bt_base__Visibility_Rule__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Badge Printing Configuration | conference360__Badge_Printing_Configuration__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Badge Printing Configuration Details | conference360__Badge_Printing_Configuration_Details__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Event Item Session | conference360__Event_Item_Session__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Event Keyword | conference360__Event_Keyword__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Event Notification | conference360__Event_Notification__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Event Ticket | conference360__Event_Ticket__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Form Question | conference360__Form_Question__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Recurring Events | conference360__Recurring_Events__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Room | conference360__Room__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Resource | conference360__Resource__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Session Keyword | conference360__Session_Keyword__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Session Resource | conference360__Session_Resource__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Track Attendee | conference360__Track_Attendee__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Track | conference360__Track__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Webinar Account | conference360__Webinar_Account__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Auction | bt_fundraising__Auction__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Auction Item | bt_fundraising__Auction_Item__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Auction Bundle | bt_fundraising__Auction_Bundle__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Auction Bundle Item | bt_fundraising__Auction_Bundle_Item__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Auction Item Allocation | bt_fundraising__Auction_Item_Allocation__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Auction Appeal | bt_fundraising__Auction_Appeal__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Auction Pledge | bt_fundraising__Auction_Pledge__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Auction Transaction | bt_fundraising__Auction_Transaction__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Bid | bt_fundraising__Bid__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Raffle | bt_fundraising__Raffle__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Raffle Entry | bt_fundraising__Raffle_Entry__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Donated Item | bt_fundraising__Donated_Item__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Donation Allocation | bt_fundraising__Donation_Allocation__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Donation Soft Credit | bt_fundraising__Donation_Soft_Credit__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Pledge | bt_fundraising__Pledge__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Gift Aid Declaration | bt_fundraising__Gift_Aid_Declaration__c | Cold | login-warm, 6h only — added 2026-09-22 |
| P2 PParticipant | bt_fundraising__P2P_Participant__c | Cold | login-warm, 6h only — added 2026-09-22 |
| P2 PTeam | bt_fundraising__P2P_Team__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Designation | bt_fundraising__Designation__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Recurring Gift | bt_fundraising__Recurring_Gift__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Code Eligibility | bt_stripe__Code_Eligibility__c | Cold | login-warm, 6h only — added 2026-09-22 |
| Data Dictionary Entry | bt_stripe__Data_Dictionary_Entry__c | Cold | login-warm, 6h only — added 2026-09-22 |
(86 cached objects total as of 2026-09-22. Fundraising settings/config objects (Auction Setting, Donation Settings, and a handful of custom-metadata configuration objects) were deliberately left out of the cache — they're per-org configuration, not per-record data, so there's nothing to sync per record.
Two objects need verification
Discount__c and Logistics_Pillar_Status__c are referenced by the cache configuration but do not appear in Blackthorn's checked-in Events package object catalog under those exact names. Logistics_Entry__c is in the catalog, but its fields read like an internal Forge task-tracking object rather than a genuine Events package object. If your org reports records under any of these three never showing up, that's the most likely cause — please contact support so we can verify the object identity against your org directly.
Per-event vs. tenant-wide syncing
A subset of objects — Session, Ticket, Form Submission, Sponsor, Speaker, Budget & Expense, Table, Custom Content, Exhibit Space, Exhibit Assignment, Sponsor Benefit, Attendee Group, Discount, Waitlist, Order, Event FAQ, Event Content, and Staff — can also be synced scoped to a single event, on demand. Everything else only syncs tenant-wide, across every event at once.
Not synced — always queried live
These objects are known to Forge but intentionally excluded from the cache system entirely — any screen reading them always queries Salesforce live, never a cache. This is by design, not a sync gap, though it's the first thing to check if a customer reports one of these “not syncing.”
| Salesforce API name | Notes |
|---|---|
| conference360__Email_Template__c | — |
| conference360__Exhibit_Space__c | — |
| conference360__Exhibit_Assignment__c | — |
| conference360__Expense_Entry__c | — |
| conference360__FAQ_Category__c | — |
| conference360__FAQ_Question__c | — |
| conference360__Track_Session__c | — |
Computed summary caches
Two dashboards don't store raw Salesforce records at all — they run a live query across several objects and persist just the computed summary, refreshing on-demand when the summary looks stale.
| Feature | Salesforce objects queried live | When it refreshes |
|---|---|---|
| Dashboard summary | Event, Ticket, Attendee, Line Item, Order, Transaction, Session, Session Attendee, Campaign | On-demand when stale, plus a background sweep |
| Pipeline / ROI summary | Opportunity, Campaign Influence, Opportunity Contact Role, Campaign Member | On-demand when viewed |
Short-lived caches
A handful of small, fast-expiring caches sit in front of specific screens — event basics, display names, session-list results, related-list rows, and edit-permission checks. These exist purely for responsiveness (seconds to a few minutes), not durability, and are cleared automatically whenever the underlying record is written.
How writes reach Salesforce
Most Forge writes go straight to Salesforce synchronously. A defined set of objects — mainly Payments, Donations, Fundraising, and Auctions — instead go through a durable queue: the write is recorded, then a background process executes the real Salesforce write shortly after.
- Payments: Invoice (Sales Document), Transaction, Line Item, Payment Schedule.
- Donations / Fundraising: Donation, Donation Allocation, Donation Soft Credit, Recurring Gift, Pledge, Gift Aid Declaration, P2P Participant, P2P Team, Designation.
- Auctions: Auction Registration, Auction Transaction, Auction Item, Auction Bundle, Auction Appeal, Auction Pledge, Bid, Raffle Entry.
- Events: Attendee, Event, Session Attendee, Attendee Group, Form Submission, Form Submission Answer, Seat, Table.
Why a recent write can look stale for a few minutes
For any object that's both queued for write-through AND cached for reads (Order, Transaction, Donation, and Attendee Group are common examples), there's a short window where the write is confirmed but the cached read hasn't picked it up yet — up to a few minutes for hot/warm objects, up to 6 hours for cold-tier ones. This is expected lag, not a bug, unless the screen you wrote from doesn't show your own change immediately.
Full object catalog by package
Cross-referencing every Salesforce object across all four managed packages against cache status. “Not in cache system” does not mean Forge never reads an object — many are queried live outside the tiered cache system, or are pure configuration/metadata objects with no sync concept at all — only that it isn't part of the tiered cache/warm-sync system covered above.
blackthorn-base (bt_base__) — 26 objects
Base package objects (forms infrastructure, visibility rules, translations, scheduling).
| Salesforce API name | Label | Cache status |
|---|---|---|
| Blackthorn_Base_Settings_Protected__c | Blackthorn | Base Settings Protected | Not in cache system |
| Blackthorn_Base_Settings__c | Blackthorn | Base Settings | Not in cache system |
| Branding_Setting__c | Branding Setting | Not in cache system |
| FeatureToggle__mdt | Blackthorn Feature Toggle | Not in cache system (custom metadata, not a record type the cache system handles) |
| Form_Big_List_Group__c | BT Form Big List Group (Deprecated) | Not in cache system — deprecated; do not confuse with conference360__Form_Big_List_Group__c, which IS cached |
| Form_Big_List_Option__c | BT Form Big List Option (Deprecated) | Not in cache system — deprecated |
| Form_Element_Condition__c | BT Form Element Condition (Deprecated) | Not in cache system — deprecated |
| Form_Element__c | BT Form Element (Deprecated) | Not in cache system — deprecated |
| Form_Question_Map_To_Object__mdt | Form Question Map To Object | Not in cache system |
| Form_Submission_Answer__c | BT Form Submission Answer (Deprecated) | Not in cache system — deprecated |
| Form_Submission__c | BT Form Submission (Deprecated) | Not in cache system — deprecated |
| Form__c | BT Form (Deprecated) | Not in cache system — deprecated |
| Keyword__c | BT Keyword | Not in cache system |
| Protected_Key__mdt | Protected Key | Not in cache system |
| Rule_Condition__c | BT Rule Condition | Cached (cold) |
| Rule__c | BT Rule | Cached (cold) |
| SCH_Schedule_Action__c | Schedule Action | Not in cache system |
| SCH_Schedule_Config__c | Blackthorn Schedule Config | Not in cache system |
| SCH_Schedule_Delta_Request__c | Schedule Delta Request | Not in cache system |
| SCH_Schedule__c | Schedule | Not in cache system |
| Schedule_Execution_Log__c | Schedule Execution Log | Not in cache system |
| Schedule_Execution__c | Schedule Execution | Not in cache system |
| Translation__c | Translation | Cached (cold) — added 2026-09-22 |
| Visibility_Rule__c | *(empty label in source XML)* | Cached (cold) — added 2026-09-22 |
events (conference360__) — 119 objects
Events package objects — the largest package, covering the full event/session/attendee/form surface.
| Salesforce API name | Label | Cache status |
|---|---|---|
| Attendee_Data_Message__c | Event Attendee Data Message | Cached (warm) |
| Attendee_Group__c | Attendee Group | Cached (warm) |
| Attendee__c | Attendee | Cached (hot) |
| Badge_Printing_Configuration_Details__c | Badge Printing Configuration Detail | Cached (cold) — added 2026-09-22 |
| Badge_Printing_Configuration__c | Badge Printing Configuration | Cached (cold) — added 2026-09-22 |
| Bee_Configuration__mdt | Bee Configuration | Not in cache system |
| Blackthorn_Events_Settings_Protected__c | Blackthorn | Events Settings Protected | Not in cache system |
| Blackthorn_Events_Settings__c | Blackthorn | Events Settings | Not in cache system |
| Blackthorn_Events_User_Settings__c | Blackthorn | Events User Settings | Not in cache system |
| Blackthorn_Events_Whitelisted_Domains__c | Blackthorn Events Whitelisted Domains | Not in cache system |
| Budget_Alert_Threshold__c | Budget Alert Threshold | Not in cache system |
| Budget_Expense__c | Budget & Expense | Cached (warm) |
| Cloudinary_Credential__mdt | Cloudinary Credential | Not in cache system |
| Comms_Priority_Rule__c | *(name-field label, not object label — verify)* | Not in cache system |
| Comms_Queue_Entry__c | *(name-field label, not object label — verify)* | Not in cache system |
| Comms_Source__c | *(name-field label, not object label — verify)* | Not in cache system |
| Communication__c | *(name-field label, not object label — verify)* | Not in cache system |
| Custom_Event_Tab__c | Custom Content | Cached (cold), as CustomContent |
| DataSyncRetry__c | Data Sync Retry | Not in cache system |
| Email_Blast__c | Email Blast | Not in cache system |
| Email_Settings__c | Blackthorn | Email Settings | Not in cache system |
| Email_Template__c | Email Template | Declared, not synced |
| Event_Ad__c | Event Ad | Not in cache system |
| Event_Attendee_Data__c | Event Attendee Data | Not in cache system |
| Event_Builder_Configuration__mdt | Event Builder Configuration | Not in cache system |
| Event_Commitment__c | Event Commitment | Not in cache system |
| Event_Content__c | Event Content | Cached (cold) |
| Event_FAQ__c | Event FAQ | Cached (cold) |
| Event_Group_Association__c | Event Group Association | Not in cache system |
| Event_Group__c | Event Group | Cached (cold) |
| Event_Item_Purchase__c | Event Item Purchase (Deprecated) | Not in cache system |
| Event_Item_Session__c | Event Item Session | Cached (cold) — added 2026-09-22 |
| Event_Item__c | Event Item | Cached (hot), as Ticket |
| Event_Keyword__c | Event Keyword | Cached (cold) — added 2026-09-22 |
| Event_Notification__c | Event Notification | Cached (cold) — added 2026-09-22 |
| Event_PM_Notification__c | Event Project Manager Notification | Not in cache system |
| Event_ROI_Target__c | Event ROI Target | Not in cache system |
| Event_Registration_Submission__c | Event Registration Submission | Not in cache system |
| Event_Settings__c | Event Settings | Cached (cold) |
| Event_Staff_Profile__c | Event Staff Profile | Not in cache system |
| Event_Task_Dependency__c | Event Task Dependency | Not in cache system |
| Event_Task_Template__c | Event Task Template | Not in cache system |
| Event_Ticket__c | *(empty label in source XML)* | Cached (cold) — added 2026-09-22 |
| Event_User_Identity__c | Event User Identity | Not in cache system |
| Event__c | Event | Cached (hot) |
| Exhibit_Assignment__c | Exhibit Assignment | Declared, not synced |
| Exhibit_Space__c | Exhibit Space | Declared, not synced |
| Expense_Entry__c | Expense Entry | Declared, not synced |
| FAQ_Category__c | FAQ Category | Declared, not synced |
| FAQ_Question__c | FAQ Question | Declared, not synced |
| Finance_Approval_Event__c | Finance Approval Event | Not in cache system |
| Finance_Approval_Request__c | Finance Approval Request | Not in cache system |
| Finance_Approval_Rule__c | Finance Approval Rule | Not in cache system |
| Flight__c | Flight | Not in cache system |
| Floor__c | *(empty label in source XML)* | Not in cache system |
| Form_Big_List_Group__c | Form Big List Group | Cached (cold) |
| Form_Big_List_Option__c | Form Big List Option | Cached (cold) |
| Form_Element_Condition__c | Form Element Condition | Cached (warm) |
| Form_Element__c | Form Element | Cached (warm) |
| Form_Question__c | *(empty label in source XML)* | Cached (cold) — added 2026-09-22 |
| Form_Submission_Answer__c | Form Submission Answer | Not in cache system |
| Form_Submission__c | Blackthorn Events Form Submission | Cached (hot) |
| Form__c | Form | Cached (warm) |
| Hotel_Room_Block__c | Hotel Room Block | Not in cache system |
| Hotel_Room__c | Hotel Booking | Not in cache system |
| Keyword__c | Keyword | Cached (cold) — added 2026-09-22 |
| Logistics_Entry__c | Not confirmed against this exact API name (see the callout above) | Cached (cold) (unverified — see callout above) |
| Mass_Email__c | Mass Email | Not in cache system |
| Mobile_Attendee_App_Usage__c | Mobile App Usage | Not in cache system |
| Mobile_Check_In_Submission__c | Mobile Check In Submission | Not in cache system |
| PO_Reconciliation__c | PO Reconciliation | Not in cache system |
| PersonAccount__c | *(empty label in source XML)* | Not in cache system |
| Portal_Contact_Role__c | Portal Contact Role | Cached (warm) |
| Protected_Key__mdt | Protected Key | Not in cache system |
| Purchase_Order_Line__c | Purchase Order Line | Not in cache system |
| Purchase_Order__c | Purchase Order | Not in cache system |
| Recurring_Events__c | Recurring Event | Cached (cold) — added 2026-09-22 |
| Resource__c | Resource | Cached (cold) — added 2026-09-22 |
| Room__c | Room | Cached (cold) — added 2026-09-22 |
| Seat__c | Seat | Cached (cold) |
| Session_Attendee__c | Session Attendee | Cached (warm) |
| Session_Keyword__c | Session Keyword | Cached (cold) — added 2026-09-22 |
| Session_Resource__c | Session Resource | Cached (cold) — added 2026-09-22 |
| Session_Speaker__c | Session Speaker | Cached (warm) |
| Session_Staff__c | Session Staff | Cached (cold) |
| Session__c | Session | Cached (hot) |
| Speaker__c | Speaker | Cached (hot) |
| Sponsor_Benefit__c | Sponsor Benefit | Cached (warm) |
| Sponsor__c | Sponsor | Cached (hot) |
| Sponsorship__c | *(empty label in source XML)* | Not in cache system |
| Staff__c | Staff | Cached (cold) |
| Table__c | Table | Cached (cold) |
| Track_Attendee__c | Track Attendee | Cached (cold) — added 2026-09-22 |
| Track_Session__c | Track Session | Declared, not synced |
| Track__c | Track | Cached (cold) — added 2026-09-22 |
| Waitlist__c | Waitlist | Cached (cold) |
| Webinar_Account__c | Webinar Account | Cached (cold) — added 2026-09-22 |
| Event_Asset__c | *(no object-meta.xml)* | Cached (warm), as EventAsset |
| Discount__c | Not confirmed against this exact API name (see the callout above) | Cached (warm) (unverified — see callout above) |
| Logistics_Pillar_Status__c | Not confirmed against this exact API name (see the callout above) | Cached (cold) (unverified — see callout above) |
fundraising (bt_fundraising__) — 29 objects
Fundraising package objects — donations, auctions, pledges, peer-to-peer.
| Salesforce API name | Label | Cache status |
|---|---|---|
| Auction_Appeal__c | Auction Appeal | Cached (cold) — added 2026-09-22; also write-only via outbox, §6 |
| Auction_Bundle_Item__c | Auction Bundle Item | Cached (cold) — added 2026-09-22 |
| Auction_Bundle__c | Auction Bundle | Cached (cold) — added 2026-09-22; also write-only via outbox |
| Auction_Item_Allocation__c | Auction Item Allocation | Cached (cold) — added 2026-09-22 |
| Auction_Item__c | Auction Item | Cached (cold) — added 2026-09-22; also write-only via outbox |
| Auction_Pledge__c | Auction Pledge | Cached (cold) — added 2026-09-22; also write-only via outbox |
| Auction_Registration__c | Auction Registration | Cached (warm) + write-only via outbox — the only fundraising object in both §2 and §6 |
| Auction_Setting__c | Auction Setting | Not in cache system |
| Auction_Transaction__c | Auction Transaction | Cached (cold) — added 2026-09-22; also write-only via outbox |
| Auction__c | Auction | Cached (cold) — added 2026-09-22 |
| Bid__c | Bid | Cached (cold) — added 2026-09-22; also write-only via outbox |
| Configuration__mdt | Fundraising Configuration | Not in cache system |
| Designation__c | Designation | Cached (cold) — added 2026-09-22; also write-only via outbox |
| Donated_Item__c | Donated Item | Cached (cold) — added 2026-09-22 |
| Donation_Allocation__c | Donation Allocation | Cached (cold) — added 2026-09-22; also write-only via outbox |
| Donation_Settings__c | Donation Settings | Not in cache system |
| Donation_Soft_Credit__c | Soft Credit | Cached (cold) — added 2026-09-22; also write-only via outbox |
| Donation__c | Donation | Cached (warm), display-only; writes always via outbox, never through this cache |
| Gift_Aid_Declaration__c | Gift Aid Declaration | Cached (cold) — added 2026-09-22; also write-only via outbox |
| Giving_Model_Mapping__mdt | Giving Model Mapping | Not in cache system |
| Jurisdiction_Config__mdt | Jurisdiction Configuration | Not in cache system |
| P2P_Participant__c | P2P Participant | Cached (cold) — added 2026-09-22; also write-only via outbox |
| P2P_Team__c | P2P Team | Cached (cold) — added 2026-09-22; also write-only via outbox |
| Pledge__c | Pledge | Cached (cold) — added 2026-09-22; also write-only via outbox |
| Price_Rule_Def__c | Price Rule Def | Not in cache system |
| Raffle_Entry__c | Raffle Entry | Cached (cold) — added 2026-09-22; also write-only via outbox |
| Raffle__c | Raffle | Cached (cold) — added 2026-09-22 |
| Recurring_Gift__c | Recurring Gift | Cached (cold) — added 2026-09-22; also write-only via outbox |
payments (bt_stripe__) — 64 objects
Payments package objects — invoices, transactions, gateways, subscriptions infrastructure.
| Salesforce API name | Label | Cache status |
|---|---|---|
| Allocation__c | Allocation | Not in cache system |
| Application_Fee_Credit__c | Deprecated - Application Fee Credit | Not in cache system |
| Blackthorn_Log__c | Blackthorn Log | Not in cache system |
| Blackthorn_Payments_Mobile_Settings__c | Blackthorn Payments | Mobile Settings | Not in cache system |
| Blackthorn_Payments_Stripe_Connect__c | Blackthorn Pay - Features | Not in cache system |
| Checkout_Submission__c | Checkout Submission | Not in cache system |
| Code_Eligibility__c | Code Eligibility | Cached (cold) — added 2026-09-22 |
| Code__c | Code | Cached (cold) |
| Company__c | Company Info | Not in cache system |
| Connected_Account_Owner__c | Connected Account Owner | Not in cache system |
| Connected_Account__c | Connected Account | Not in cache system |
| Coupon2__c | Stripe Coupon | Not in cache system |
| Data_Dictionary_Entry__c | Data Dictionary Entry | Cached (cold) — added 2026-09-22 |
| Data_Dictionary_Group__c | Data Dictionary Group | Cached (cold) |
| Dispute_Evidence__c | Dispute Evidence | Not in cache system |
| Dispute__c | Dispute | Not in cache system |
| DocumentLinkTemplate__c | DocumentLink Template | Not in cache system |
| Fee_Tiers__c | Blackthorn Pay - Transaction Fees | Not in cache system |
| Fee__c | Fee | Cached (cold) |
| Gateway_Order_Item__c | Gateway Order Item | Not in cache system |
| Gateway_Order__c | Stripe Gateway Order | Not in cache system |
| Gateway_SKU__c | Gateway SKU | Not in cache system |
| Line_Item__c | Line Item | Cached (warm), as InvoiceLine — write-only via outbox for the corresponding SF write |
| Location__c | Location | Not in cache system |
| Payment_Gateway__c | Payment Gateway | Cached (warm) |
| Payment_Intent__c | Payment Intent | Not in cache system |
| Payment_Method_Parents__c | Blackthorn Pay - Payment Method Parents | Not in cache system |
| Payment_Method__c | Payment Method | Not in cache system |
| Payment_Schedule__c | Payment Schedule | Not in cache system (write-only via outbox) |
| Payments_User_Override__c | Payments User Override | Not in cache system |
| Plan2__c | Stripe Price | Not in cache system |
| Protected_Key__mdt | Protected Key | Not in cache system |
| Reattempt_Settings__c | Blackthorn Pay - Reattempt Settings | Not in cache system |
| Relationship_Settings__c | Relationship Settings | Not in cache system |
| Sales_Document__c | Invoice | Cached (hot), as Order — write-only via outbox for the corresponding SF write |
| Stripe_API_Keys__c | Blackthorn Pay - Stripe Connect API Keys | Not in cache system |
| Stripe_Application_Fee__c | Deprecated - Application Fee | Not in cache system |
| Stripe_Billing_Component_Settings__c | Blackthorn Pay-Stripe Billing Component | Not in cache system |
| Stripe_Connect_Country_Specs__mdt | Stripe Connect Country Specs | Not in cache system |
| Stripe_Currency_Setting__mdt | Stripe Currency Setting | Not in cache system |
| Stripe_Customer__c | Payment Gateway Customer | Not in cache system |
| Stripe_Metadata_Mapping__mdt | Stripe Metadata Mapping | Not in cache system |
| Stripe_Platform_Credential__mdt | Platform Credential | Not in cache system |
| Stripe_Settings__c | Blackthorn Pay - Trigger Settings | Not in cache system |
| Subscription2__c | Subscription | Not in cache system — NB: recurring-engine rule forbids using this; see CLAUDE.md |
| Subscription_Item__c | Subscription Item | Not in cache system |
| Subscription_Schedule__c | Subscription Schedule | Not in cache system |
| Tier__c | Tier | Not in cache system |
| Transaction_Field__c | Blackthorn Pay - Transaction Parents | Not in cache system |
| Transaction_Validation_Rules__c | Blackthorn Pay - Transaction Validations | Not in cache system |
| Transaction__c | Transaction | Cached (hot) — write-only via outbox for the corresponding SF write |
| Usage__c | Usage | Not in cache system |
| Virtual_Terminal_Mapping__mdt | Virtual Terminal Mapping | Not in cache system |
| Virtual_Terminal_Settings__c | Blackthorn Payments | Virtual Terminal | Not in cache system |
| Webhook_Event__c | Webhook Event | Not in cache system |
| Webhook_Secret__mdt | Webhook Secret | Not in cache system |
forge-unpackaged (org-native custom objects) — 55 objects
These are Forge-owned custom objects with no managed-package namespace (Abstracts, Appointments, Event project-management, Purchase Orders, Vendor tracking, and a few others). None of them participate in the tiered cache/warm-sync system described above — if one of these is expected to sync on login, that would be new work, not a gap in existing wiring.
Likely causes when something looks like it isn't syncing
- Cold-tier objects have no dedicated refresh cadence — only the 6-hour full sweep and login warm-up touch them, so a record can be stale for up to 6 hours (or effectively longer for a low-traffic tenant that hasn't had a recent session).
- The handful of “declared, not synced” objects above never populate the cache regardless of time — any screen reading one of these should fall back to a live query and show correct (if slower) data. If it shows nothing instead, that's worth reporting.
- Write-through lag: a Forge write to a queued object completes asynchronously, and the read side only picks it up on the next tier sync — a few minutes on hot/warm objects, up to 6 hours on cold ones.
- An unverified cache-key identity (see the Discount/Logistics callout above) can make a sync silently fail or return zero rows every cycle for that specific object.
- A tenant's session may simply predate an object being added to the cache system — a tenant that hasn't had a fresh full sync since an object was added could still show an empty cache for that object specifically.
If you've checked the above and something still looks wrong, contact support with the specific object and record in question so we can check your org's sync state directly.