Skip to main content
NetterTech
Event management for WordPress, done right.

Known losses

Most event data migrates cleanly between The Events Calendar and NetterTech Events, but a handful of fields are expected not to survive a complete round-trip. This page documents those losses up front so you can plan around them.

Summary

FieldDirectionImpactWorkaround
Venue Post IDTEC → NTELowVenue data preserved, just denormalized
Ticket Security CodesTEC → NTE → TECMediumRequires ticket reissue
External Event URLTEC → NTELowManual entry if needed
Hide From UpcomingTEC → NTELowUse NTE status field instead
Cost Display FieldsTEC → NTENoneNTE uses actual ticket prices (improvement)
Layout ConfigNTE → TECLowPer-event customization lost
Check-in TokenNTE → TECLowVolunteer check-in URLs lost
Checked-in CountNTE → TECMediumPartial check-in detail lost
Accessibility NotesNTE → TECLowMap to generic notes

TEC → NetterTech Events losses

Venue post ID

  • Field: _EventVenueID (TEC post ID)
  • Impact: Low
  • Reason: NetterTech Events stores venue data directly on the event record instead of maintaining separate venue posts.
  • What’s preserved: All venue information (name, address, city, state, postal code, country, phone, website) is denormalized onto each event.
  • Round-trip impact: If you migrate back to TEC, new venue posts are created. Duplicate detection prevents redundant venues.

Ticket security codes

  • Fields: _tribe_wooticket_security_code, _ticket_security_code
  • Impact: Medium – affects existing QR codes and ticket barcodes.
  • Reason: NetterTech Events generates its own unique ticket codes using a different format.
  • User impact: Existing QR codes and ticket barcodes from TEC become invalid after migration.
  • Workaround: Implement a “Reissue Tickets” workflow after migration to send attendees new QR codes. Plan this before you migrate if you have sold tickets.

External event URL

  • Field: _EventURL
  • Impact: Low
  • Reason: NetterTech Events has no equivalent field for external event URLs.
  • Workaround: Add the external URL to the event description, or use a custom field.

Hide from upcoming

  • Field: _EventHideFromUpcoming
  • Impact: Low
  • Reason: NetterTech Events uses event status (published, draft, hidden) instead of a separate hide flag.
  • Workaround: Events marked as hidden in TEC can be set to hidden or draft status in NetterTech Events after migration.

Cost display fields

  • Fields: _EventCost, _EventCostDescription, _EventCurrencySymbol, _EventCurrencyPosition
  • Impact: None – this is actually an improvement.
  • Reason: NetterTech Events calculates and displays prices from actual ticket type records rather than storing display-only cost fields.
  • Benefit: The displayed price always matches real ticket prices. No possibility of drift between the cost string and the actual cart.

NetterTech Events → TEC losses

These losses only matter if you’re migrating back to TEC (for example, to exit NetterTech Events or to run a parallel instance).

Layout config

  • Field: layout_config (JSON)
  • Impact: Low
  • Reason: TEC has no equivalent for per-event layout customization. NetterTech Events allows events to override default template layouts.
  • User impact: Events exported to TEC will use TEC’s default layouts. Any per-event layout customization is lost.

Check-in token

  • Field: checkin_token
  • Impact: Low
  • Reason: NetterTech Events’ volunteer check-in system uses unique tokens for each event/occurrence. TEC has no equivalent concept.
  • User impact: Volunteer check-in URLs become invalid after export to TEC.

Checked-in count (partial check-in)

  • Field: checked_in_count
  • Impact: Medium – partial check-in detail is lost.
  • Reason: NetterTech Events supports partial check-in (e.g., 2 of 4 tickets checked in for one attendee). TEC only tracks a binary checked-in status.
  • Example:
    • Before: NetterTech Events shows “Attendee has 4 tickets, 2 checked in”
    • After export to TEC: Attendee shows as checked_in = true, losing the “2 of 4” detail

Accessibility notes

  • Field: accessibility_notes
  • Impact: Low
  • Reason: NetterTech Events has a dedicated field for accessibility requirements. TEC only has generic notes.
  • Workaround: Accessibility notes can be mapped to TEC’s generic notes field or prepended to attendee info.

Bidirectional considerations

Series / recurring events

Partial support. TEC → NetterTech Events imports series relationships and generates occurrences from RRULE. NetterTech Events → TEC exports the RRULE, but series post relationships may not be recreated identically. Occurrences will match, but administrative structure may differ.

Full support. Both directions. Images are re-attached to the destination post/event and maintain their WordPress media library relationships.

Organizer images

Full support. Same handling as featured images.


Migration recommendations

Before migration

  1. Back up everything – database and uploads directory
  2. Inform users about ticket reissue if applicable
  3. Document custom fields – any TEC custom meta that may not have NetterTech equivalents
  4. Test with dry run – use dry-run mode first to see what will change

After TEC → NetterTech Events migration

  1. Verify venue data on spot-checked events
  2. Review hidden events – check the status of events that were hidden in TEC
  3. Plan ticket reissue if tickets were sold in TEC – existing QR codes are invalid

After NetterTech Events → TEC migration

  1. Check attendee status – verify check-in data looks correct
  2. Review event layouts – re-apply any custom layouts
  3. Test check-in in TEC

ID preservation

IDs are not preserved across systems. The migration uses slug-based matching to maintain relationships:

EntityMatched by
Eventspost_name / slug
Categoriesslug
Tagsslug
Organizersslug
Ticket Typesname + event slug
Attendeesemail + event slug + ticket name

This means: if you run a migration, delete the destination, and re-run, the migrator will recreate everything with new IDs but the same slug-based relationships.

Shared Capacity (Event Tickets “shared” stock)

Field: _global_stock_mode / _global_stock_cap on the ticket, _tribe_ticket_use_global_stock / _tribe_ticket_capacity on the event Impact: Low (mapped; one documented simplification) Mapping: A ticket that draws from the event’s shared pool (global) becomes a shared ticket type and the pool becomes the occurrence’s capacity (the “house”). A capped ticket becomes a fixed type with its own ceiling, still bounded by the house at checkout. Tickets with their own stock (own) and unlimited tickets are unchanged. The reverse export writes the same keys back, so a shared setup survives a round trip. Simplification: On a recurring event with several dates and one shared pool, the pool cannot be attached to a single date, so its tickets are imported as fixed types sized to the pool. Each date still carries the pool as its capacity, so no date can oversell; what is lost is the “one pool across all dates” accounting. Single-date events keep the shared type exactly. Warnings: The pre-flight check flags tickets that claim shared stock on an event with no pool (imported as unlimited) and unlimited tickets on a pooled event (not bounded by the house).

Attendee Registration Fields (Event Tickets Plus)

Field: _tribe_tickets_meta_enabled / _tribe_tickets_meta on the ticket (definitions) and on the attendee (answers) Impact: Low (mapped) Mapping: Registration questions defined on a ticket become NetterTech attendee fields on the event (one field per event and question key, so the same question on several tickets of one event is merged), and each attendee’s answers become field values on the imported attendee. Field types map one-to-one (telephone becomes phone; birth and date/time become date); a type NetterTech does not have is imported as a text field and flagged in the pre-flight check. Checkbox answers, which Event Tickets Plus stores one option at a time, are folded into a single comma-separated value. Not carried: conditional display rules and saved field sets (templates) — the fields themselves are imported, the reusable set is not.