# See every field your Census syncs write into your CRM

> Browse your whole Census workspace as one map of destinations, syncs, and the exact fields they write, and catch write conflicts before they reach your CRM.

- Workflow type: app
- Services: Census, Google Sheets
- Categories: Operations, Engineering
- Published: 2026-08-16

## What it does

- Turns your workspace into a browsable inventory: every destination, the syncs pointed at it, and every source column mapped to every destination field.
- Lets you search any destination field name, like lifecycle_stage, and instantly see every sync that writes to it.
- Flags governance problems for you: two or more syncs writing the same field on the same object, syncs paused or not run in a long time, and datasets that no sync uses.
- Exports the whole map to a fresh spreadsheet with one row per field mapping, ready for your quarterly data governance review.

## What you'll need

- A Census workspace and permission to create a workspace API key (Organization Admins and Workspace Owners can create one).
- A Google account, so the export can create a spreadsheet in your Drive.
- Nothing to configure on the CRM side. The app reads your sync configuration from Census only.

## Prompt

Build me an app that turns our Census workspace into a browsable activation map, so anyone on the team can answer "what is actually writing to this field in Salesforce, and where does it come from" without opening sync after sync in the Census UI. Our workspace has grown to dozens of syncs and nobody can answer that question today. The app is read only apart from the spreadsheet export.

The home view is a destination inventory. Use Census List Destinations to show every destination connection with its name, its service type, and how many syncs point at it. Selecting a destination opens a destination detail view that uses Fetch Destination for the connection detail and List Destination Object Types to show which object types that destination supports, alongside the list of syncs targeting it, filtered from List Syncs.

Selecting a sync opens the most important view, the field level mapping table. Use Census Fetch Sync, which is the only place mappings are returned, to render one row per mapping showing the source column and the destination field it writes. Around that table show the sync's schedule, whether it is currently paused, its source connection resolved from List Sources, and its recent run history from List Sync Runs with status and last run time.

Put a search box across the whole inventory. When I type a destination field name like lifecycle_stage, I want every sync that writes to that field listed immediately, with its destination, its destination object, and its source, so I can click straight through to any of them. Search should also match sync names, source column names, destination names, and dataset names.

The app should also flag governance problems automatically and show them in a dedicated issues view with a count badge. First, write conflicts: two or more syncs writing the same destination field on the same object at the same destination, which is the highest priority flag. Second, stale or neglected syncs: syncs that have been paused for a long time, or whose most recent run in List Sync Runs is older than a threshold I can change, defaulting to 30 days. Third, orphan datasets: datasets from List Datasets that no sync references at all. Each flagged item should link back to the relevant sync or dataset in the inventory.

Add an "Export inventory" button that writes the whole map to a spreadsheet for our quarterly data governance review. Use Google Sheets Create Spreadsheet to make the file, then Append Values to fill it, with one row per field mapping. Each row should carry the destination, the destination object type, the destination field, the source connection, the source column, the sync name, the sync schedule, whether the sync is paused, the last run status and time, and any governance flags that apply to that row. Show me the spreadsheet link when the export finishes.

Important data fetching notes. Field mappings are only returned per sync by Fetch Sync and never by List Syncs, so building the map means paging through List Syncs with per_page at its maximum of 100 and following pagination.next_page until it is null, then fanning out one Fetch Sync per sync. Cache that fanned out snapshot server side so the browser is not refetching everything on each interaction, show a last updated timestamp, and give me an explicit refresh button. Respect 429 responses by honoring the Retry-After header and backing off. Census responses are wrapped as status, data, and pagination, so always read from data, and all identifiers are integers. Use List Datasets for orphan detection, not the deprecated models endpoints.

One scope boundary to respect. This inventory is Census side only. There is no usable operation for reading live field metadata out of the destination CRM, so the app must not claim to reconcile Census mappings against live Salesforce or HubSpot field definitions, and must not imply a destination field exists or is valid just because a sync targets it. What it legitimately shows is which destination field each sync claims to write, sourced from that sync's own mapping configuration, plus the supported object types from List Destination Object Types. Make that framing clear in the interface. Since updates to syncs replace nested objects wholesale rather than merging, the app should not offer mapping edits at all.

## How to customize

- Change what counts as stale, for example flag a sync after 7 days without a run instead of 30.
- Narrow the inventory to the destinations you care about, such as only Salesforce and HubSpot.
- Adjust the export columns, or point the export at an existing governance spreadsheet instead of creating a new one each quarter.

## FAQ

### Will this change or break any of my syncs?

No. The app only reads your workspace and writes the export spreadsheet. It never edits mappings, schedules, or sync settings, and it never starts a sync run.

### Does it show me fields that exist in Salesforce or HubSpot but are not being synced?

No, and that is deliberate. The map shows the destination field each sync says it writes, taken from that sync's own mapping configuration in Census, plus the object types your destination supports. It does not read live field lists out of your CRM, so treat it as an inventory of what Census is configured to write rather than a reconciliation against your CRM schema.

### What exactly counts as a write conflict?

Two or more syncs writing to the same field on the same object at the same destination, for example two syncs both setting lifecycle_stage on the HubSpot contact object. That is the classic cause of values mysteriously flipping back and forth, so the app surfaces those pairs first.

### How long does it take to load if we have dozens of syncs?

The first load walks every sync to collect its field mappings, so it takes a moment on a large workspace. After that the inventory is cached, so searching and drilling around is instant, and there is a refresh button plus a last updated timestamp when you want current data.

### Does it work with any destination, or only CRMs?

Any destination in your workspace. CRMs are the common case, but ad platforms, marketing tools, and support tools all appear in the same map with the same field level detail.

Use this prompt in General Input: https://www.generalinput.com/prompts/see-every-field-your-census-syncs-write-into-your-crm