A Gravity Forms survey can store values that differ from visible choice labels. Multi-select answers may use several columns or a serialized representation, scores can be calculated from current field settings, and renamed choices can make old responses hard to interpret. Spreadsheet software adds another layer by changing dates, long IDs, leading zeros, Unicode, separators, and formulas when the CSV is opened.
Use this when a Gravity Forms survey export feeds research, reporting, a CRM, Google Sheets, a data warehouse, or a scheduled client report.
Quick answer
Clone the form to staging and define choices whose labels and values are intentionally different. Add multi-select answers, Unicode, commas, quotes, line breaks, blank responses, zero, leading zeros, formula-like text, and a historical response created before a choice rename. Export the same date range and fields through the admin and any scheduled process. Compare entry IDs, field IDs, labels, stored values, selected choices, scores, encoding, row count, and column order before opening the file in spreadsheet software.
Test scenarios to run
Run the same controlled fixture across these branches. Write down the expected result before testing so a surprising response is easy to identify.
| Scenario | Fixture | Expected result |
| Single choice | Label differs from value | Both map to one field ID |
| Multi-select | Three selected options | All choices preserved once |
| Renamed choice | Historical entry | Old value remains interpretable |
| CSV edge | Unicode, comma, formula text | Escaped and safe |
Diagnostic table
Use this table to connect the observed behavior to evidence and a verification step.
| Action | Evidence | Verification |
| Map field IDs and choice contracts | Inventory survey field IDs, input IDs, current labels, stored values, scores, multi-select behavior, conditional logic, and historical choice changes. | Entry and field IDs reconcile across every export path. |
| Build a hostile CSV fixture | Create synthetic entries covering one choice, several choices, blank, zero, Unicode, comma, quote, line break, leading zero, and formula-like text. | Multi-select answers, blanks, zero, Unicode, and delimiters survive exactly. |
| Compare every export path | Export through wp-admin, scheduled jobs, add-ons, API, and data warehouse paths using the same UTC range and selected columns. | Renamed choices and historical scores remain interpretable. |
| Preserve historical choice context | Compare raw CSV bytes with the opened spreadsheet because automatic type conversion can change IDs, dates, phone-like values, and formulas. | Spreadsheet opening does not silently alter IDs, dates, values, or formula-like text. |
What to check first
- Inventory survey field IDs, input IDs, current labels, stored values, scores, multi-select behavior, conditional logic, and historical choice changes.
- Create synthetic entries covering one choice, several choices, blank, zero, Unicode, comma, quote, line break, leading zero, and formula-like text.
- Export through wp-admin, scheduled jobs, add-ons, API, and data warehouse paths using the same UTC range and selected columns.
- Compare raw CSV bytes with the opened spreadsheet because automatic type conversion can change IDs, dates, phone-like values, and formulas.
- Define whether downstream systems require human labels, stable values, both fields, or a versioned choice dictionary.
Field notes
- Write the expected result before changing anything and keep one repeatable synthetic fixture for the full test window.
- Record exact versions and UTC timestamps because caches, retries, scheduled actions, and deployments can change the evidence between checks.
- Test the public path and the stored server-side result, not only an admin preview, isolated command, or API response.
- Review the result again after the relevant cache, queue, cron, webhook, and observation window has completed.
Useful command or data shape
Adapt paths, IDs, and privacy handling to the site before running commands or storing data on production.
entry_id,field_id,choice_label,choice_value,selected,score
9001,12,Very satisfied,5,true,5
9001,13,Email,email,true,1
9001,13,Phone,phone,true,1
# Keep a versioned choice dictionary for historical exports.
Why this usually happens
- Reports assume the visible label is the durable key even after editors rename it.
- A multi-input field is flattened differently by admin export and an integration.
- Spreadsheet software applies type or formula interpretation after the CSV is correct.
- A score is recomputed from current field settings instead of preserving the historical context.
Decision rule
Use stored values as durable machine keys only when they are unique and governed. Give analysts labels plus a versioned choice dictionary, and never infer historical meaning from the current editor alone.
Production verification checklist
- Entry and field IDs reconcile across every export path.
- Multi-select answers, blanks, zero, Unicode, and delimiters survive exactly.
- Renamed choices and historical scores remain interpretable.
- Spreadsheet opening does not silently alter IDs, dates, values, or formula-like text.
Safe fix order
Use a sequence that makes each result easy to prove. Stop when new evidence changes the scope or owner of the problem.
- Map field IDs and choice contracts
- Build a hostile CSV fixture
- Compare every export path
- Preserve historical choice context
- Validate raw files before spreadsheets
Mistakes to avoid
- Changing production before recording exact versions, UTC timestamps, a stable fixture, the expected result, and a tested rollback point.
- Treating one successful screen as proof while logs, stored records, background jobs, caches, emails, APIs, and downstream systems remain unchecked.
- Testing only as an administrator instead of using the role, device, locale, cache state, request path, and failure branch that users actually reach.
- Leaving debug output, temporary exclusions, helper accounts, duplicate hooks, broad permissions, or relaxed firewall rules active after verification.
Questions teams ask during testing
Can I test this directly in production?
Start with read-only evidence. Use staging for code, package, security, checkout, form, privacy, or cache changes. If a production canary is necessary, make it identifiable, reversible, monitored, and incapable of exposing personal data or charging a customer.
How do I avoid a false positive?
Repeat the same fixture with the same versions, URL, role, locale, cache state, and downstream integration. Compare the public result, stored result, and logs instead of relying on one browser view.
What evidence should I retain?
Keep UTC time, exact versions, request or record ID, expected result, actual result, relevant log lines, change made, rollback point, owner, and final verification. Redact credentials, tokens, and personal data.
When is the work complete?
Close it when the primary path passes, failure branches are understood, stored and downstream records reconcile, temporary changes are removed, monitoring is active, and the owner has the evidence packet.
What to tell the client or owner
Give the owner a concise packet with the affected workflow, exact versions, UTC test time, synthetic fixture ID, expected result, actual result, key logs, change made, rollback point, final result, unresolved risks, owner, and next review date. Remove credentials and personal data before sharing it.
When HandL WP should help
Bring in help when this affects leads, checkout, search visibility, security, paid media reporting, or a client production site. HandL WP can trace the issue through WordPress, hosting, cache, tracking, and Search Console, then verify the workflow after the technical fix.
If this is active on a production site, have HandL WP verify a Gravity Forms export.
Related HandL WP guides
Use these related guides when the same issue touches tracking, security, checkout, or crawler visibility.
Helpful references