Everything you need to know about PrevVal.
From installation to advanced usage. Comprehensive guides on mappings, tracking modes, backfill, and property compatibility — all in one place.
Get started with PrevVal.
Install in 3 Minutes
Get PrevVal running from the HubSpot Marketplace, add your first mapping, and start tracking property changes automatically.
Get StartedFull Reference Guides
Mappings, tracking modes, backfill, property compatibility, plan limits and best practices — everything documented below.
View DocsExpert Help
Need help with setup, configuration, or troubleshooting? Our team is here to get you up and running.
Get HelpExplore the guides.
Click any section below to expand. Use the quick navigation above to jump directly to a topic.
Getting started with PrevVal takes about 3 minutes. No workflows, no code, no API keys required.
Install from Marketplace
Click Install on the HubSpot Marketplace listing. You'll be taken to HubSpot's secure OAuth authorization page. Accept permissions and you're connected.
Add a Mapping
Open the PrevVal card in HubSpot. Click "+ Add Mapping". Select your object type, the property to track, the destination property, and your tracking mode.
Done — It Runs Itself
From this point forward, every time that property changes in HubSpot, PrevVal automatically writes the previous value to your destination property.
- Active HubSpot account with Admin access
- Destination property already created in HubSpot
- No workflows, API keys, or developer tools needed
- Open the PrevVal card from any HubSpot record
- Free plan includes 2 mappings — upgrade anytime
- Use Backfill to populate values for existing records
A mapping is a tracking rule. It tells PrevVal which property to watch and where to write the previous value when it changes.
- Watches one source property on one object type
- When that property changes, writes the old value to your destination property
- Runs automatically in the background — forever
- Works on Contacts, Companies, Deals, Tickets, and Custom Objects
- Create your destination property in HubSpot before adding the mapping
- Source and destination must be different properties
- Your plan determines how many mappings you can have
- Deleting a mapping stops tracking — it does not delete stored values
Deal Mappings
dealstage→previous_deal_stageamount→previous_amountclosedate→previous_close_datehubspot_owner_id→previous_ownerContact Mappings
lifecyclestage→previous_lifecycle_stagehubspot_owner_id→previous_ownerutm_source→ft_utm_sourcecity→previous_cityOther Mappings
industry→previous_industryhubspot_owner_id→previous_ownerhs_pipeline_stage→previous_ticket_stagehs_ticket_priority→previous_priorityWhen you add a mapping, you choose a tracking mode. The mode controls what PrevVal does when a property change is detected.
Ignore Blank Values
Only writes when the previous value was not empty. The right default for most properties — every meaningful change captured, no blank noise.
Best for: Deal stage, owner, close date, lifecycle stage, dropdowns.
Include Blank Values
Always writes the previous value, even when it was blank. Use when deliberately clearing a field is itself a meaningful event worth recording.
Best for: Compliance tracking and audit trails where clearing a field needs to be on record.
Preserve Last Known
Skips blanks, cleared values, and values matching the current value. Finds the last truly different non-blank value in the property history.
Best for: Deal amount and revenue fields that fluctuate, get cleared, and reset over time.
First & Last Touch
Stores two values simultaneously. First Touch locks in the very first value ever — never overwritten. Last Touch updates on every change.
Best for: UTM source, lead source, lifecycle stage origin — know where something started and what it was last.
Free plan note
The Free plan supports Ignore Blank Values only. Upgrade to Pro or Enterprise to unlock Include Blanks, Preserve Last Known, and First & Last Touch modes.
PrevVal writes the previous value as a string to your destination property. The destination property type determines what HubSpot will accept. Mismatched types will cause writes to fail silently.
- Clone the source property and rename it "Previous [Name]"
- Identical field type and options — no compatibility issues
- HubSpot displays the label instead of the raw internal value
- The best default for dropdowns, pipeline stages, owners, dates, and numbers
- Eliminates any guesswork around type mismatches
- Accepts any value from any source property type
- Stores the raw internal value (e.g. "closedwon" not "Closed Won")
- Fine for filtering, reports, and workflow branches — but displays the internal name, not the label
- Avoid for pipeline stages if you have multiple pipelines (see below)
- For most properties, cloning ensures HubSpot displays the human-readable label rather than the raw internal value. Deal Stage makes this especially clear.
- HubSpot stores deal stage values differently depending on the pipeline. Default pipeline stages use readable internal names (e.g.
closedwon), but additional pipelines store stages as numeric IDs (e.g.1181019430). - If you use single-line text as the destination, those numeric IDs are exactly what gets written — making the previous value unreadable in your CRM.
- Always clone the native Deal Stage property, rename it Previous Deal Stage, and use that as your destination. The cloned property carries all pipeline stages and displays the correct label automatically.
Here's what the native Deal Stage property looks like — notice how secondary pipelines store numeric IDs instead of readable names:
closedwon → HubSpot displays "Closed Won"1181019430 → nobody knows what that means| Source type | Single-line text | Same type (cloned) | Different type |
|---|---|---|---|
| Dropdown / Radio select | Works — stores internal name | Recommended — displays label | Will fail |
| Deal Stage (pipeline) | Avoid — numeric IDs for non-default pipelines | Recommended — displays label | Will fail |
| Number / Currency | Works — stores as text | Recommended — stores as number | Will fail |
| Date / Date-time | Works — stores as text | Recommended — stores as date | Will fail |
| Single-line text | Works | Works | Will fail |
| Owner (user lookup) | Works — stores user ID | Recommended — resolves to user | Will fail |
| Checkbox (boolean) | Works — stores true/false | Works | Will fail |
- Tracking Deal Stage into a single-line text field — works for the default pipeline but breaks on additional pipelines that use numeric IDs
- Tracking a Date property into a Number field — will fail silently
- Tracking a Dropdown into a Number field — will fail silently
- Tracking Currency into a Date field — will fail silently
- If writes aren't appearing, check destination property type matches source
- Clone the source property and rename it — works for everything and displays labels correctly
- Single-line text is a safe fallback if you just need the value filterable in reports and workflows
- Check the Guides tab inside the app for step-by-step setup
- Contact support if values aren't appearing after 5 minutes
Backfill reads HubSpot's existing property history and populates previous values for records that already existed before you installed PrevVal. It's optional — PrevVal starts tracking automatically from the moment you add a mapping.
Smart Fill
Only targets records that have a source value but are missing a destination value. The most efficient option — skips records already populated.
Last 30 / 60 / 90 Days
Targets records created within a specific date range. Useful for populating previous values for recent records regardless of whether they already have a destination value.
Manual Record Backfill
Run backfill on a single record instantly. Paste a record ID or HubSpot URL, select your mapping, and PrevVal writes the previous value immediately. Does not count toward daily run limit.
| Plan | Backfill scope | Daily runs | Manual backfill |
|---|---|---|---|
| Free | Not available | Not available | Not available |
| Professional | Smart Fill + Last 30 days | 3 / day | Unlimited |
| Enterprise | Smart Fill + Last 30, 60 & 90 days | 10 / day | Unlimited |
- Run Smart Fill first — most targeted and efficient
- Only one backfill job can run at a time per portal
- Each run processes up to 10,000 records
- Daily run count resets at midnight in your portal timezone
- Backfill reads HubSpot's property history — no history means nothing is written
- HubSpot only retains property history for a limited time
- Backfill does not overwrite existing destination values in Ignore Blanks mode
- Large datasets take time — check the progress bar in the Backfill tab
PrevVal's plans are based on mappings — the number of tracking rules you can have active at once.
Free Forever
- 2 mappings
- Ignore Blank Values mode only
- Live automatic tracking
- No backfill
- 50 events / 60 seconds (over limit = dropped)
- Email support
Professional
- 10 mappings
- All tracking modes
- Smart Fill + Last 30 days backfill (3 runs/day)
- Unlimited manual record backfill
- 500 events / 60 seconds
- Priority support
Enterprise
- 25 mappings
- All tracking modes
- Smart Fill + Last 30, 60 & 90 days (10 runs/day)
- Unlimited manual record backfill
- 1,000 events / 60 seconds
- Priority support
What is the event limit?
The event limit is the maximum number of unique property changes PrevVal will process inline within a 60-second window. If more than this amount arrive in a single cycle, the overflow is automatically routed to the backfill queue and processed in the background — nothing is lost. The exception is the Free plan, which does not include backfill access, so events over the limit are dropped.
- Free — 50 events / 60s (over limit = dropped)
- Professional — 500 events / 60s (over limit = routed to backfill)
- Enterprise — 1,000 events / 60s (over limit = routed to backfill)
Running a bulk operation? Pause your mappings first.
Importing records, bulk editing, or mass-enrolling via workflow can flood the processing queue. When this happens, live real-time changes may be skipped. Open the PrevVal card in HubSpot, go to the Overview tab, and toggle the mapping off before your bulk operation. Re-enable it when done.
Previous values are stored in native HubSpot properties — use them anywhere HubSpot properties are supported.
Build Reports
Create reports comparing current vs previous values. Build a deal report showing Amount vs Previous Amount to catch last-minute discounts before they close.
Example: Filter deals where previous_amount is known and amount is less than previous_amount.
Filter Lists
Create active or static lists filtered by previous property values. Identify deals that were previously at a higher stage or contacts that bounced backwards.
Example: Contacts where previous_lifecycle_stage = Opportunity but lifecyclestage = Lead.
Trigger Workflows
Use previous values as enrollment criteria or branch conditions in HubSpot workflows. Trigger alerts when a deal drops below its previous amount.
Example: Enroll deals where previous_deal_stage is known and dealstage is earlier in the pipeline.
Ready to start tracking
previous values?
Install free, add a mapping, and PrevVal starts tracking automatically. Set it and forget it.