Skip to content

Gamification 0.9.94 / Integrations

GamiPress integration

Migrate GamiPress points, achievements, rank ladders, and earned history safely.

The adapter recognizes GamiPress's native publish-post, publish-page, and publish-specific-content-type point awards as exact WordPress publication events. Conversion review can create an equivalent disabled reward-rule draft with the source amount, destination point type, lifetime limit, and content-type condition preserved. An administrator must review and publish every converted rule. Untouched proposals may be reclassified when the adapter learns a more exact translation; explicit dismissals and converted drafts remain unchanged.

With Pro active and GamiPress detected, map every discovered points type in Integrations and preview the next bounded batch before importing it. The adapter supports current direct log fields and the older points log-meta representation.

Each run explicitly selects Points and balances, Achievements and earned history, Ranks and rank history, any combination, or all three. Unselected families are skipped at the adapter phase boundary, including their database queries. Full-state achievement removal reconciliation is available only when Achievements is selected. Automation conversion remains a separate disabled- draft review workflow rather than hidden member-migration work.

Log IDs are checkpointed and every award, deduction, expend, or revoke movement is posted through the immutable ledger. Current-balance reconciliation detects cleanup or manual-edit gaps without changing either system. Opening balances are available only as explicit traceable transactions when history is incomplete.

Provider-authoritative imports and ongoing synchronization automatically follow each completed log pass with a bounded member-balance sweep. It compares the transformed GamiPress total with only GamiPress's imported Cointacted projection and posts an immutable residual only when the two differ. The sweep is checkpointed, replay-safe, and never runs on frontend requests. The discovered point-type snapshot is normalized before this sweep so empty or late-initialized GamiPress registries stop safely instead of breaking a batch.

Each GamiPress points type can preserve its native scale, use an exact percentage, or use a custom decimal multiplier when mapped. The destination point type controls visible precision, and the administrator explicitly chooses nearest, toward-zero, down, or up rounding. Decimal-string arithmetic is used throughout, so deductions and fractional converted balances do not pass through PHP floating point. Reconciliation compares the transformed provider balance with GamiPress's own imported Cointacted projection; unrelated native rewards in the same member balance do not create false conflicts.

Deleting or cleaning an old GamiPress log does not delete or reverse its already imported Cointacted transaction. Replays import only records that still exist, while Cointacted retains the original immutable audit history.

GamiPress achievement types and definitions also migrate into namespaced Cointacted achievement families. Names, descriptions, publication state, images, visibility, per-member repeatability, and earning limits are preserved. Each native user-earning ID becomes one replay-safe Cointacted grant with its original earned time and provider provenance. Preview scans the same semantic records without creating types, definitions, grants, mappings, or ledger transactions. Historical occurrences remain intact even when they exceed the definition's current per-member limit because that limit may have been reduced after members earned them; new Cointacted grants still enforce the current limit normally.

GamiPress may award points as part of earning an achievement, and that movement is already represented in its points log. The converted Cointacted definition therefore awards zero additional points. Native earning modes, point/rank conditions, sequence settings, and step fields are retained as safe source semantics for an explicit later rule conversion; they are not activated as a second set of triggers.

Deleting a native earned-achievement row leaves no provider tombstone. Ordinary incremental imports therefore remain non-destructive and retain the Cointacted grant. To review deletions, explicitly enable Full-state earned-achievement reconciliation for that run. Always run a preview first:

  • with GamiPress authority, preview records would_reverse and execution
  • revokes the corresponding Cointacted grant;

  • with Compare only or Cointacted authority, the missing earning is recorded as
  • a conflict and the grant is preserved;

  • the original grant mapping is never replaced. A separate absence mapping and
  • revocation metadata retain the run, authority, provider, and source evidence;

  • repeating the scan is a no-op, and a native earning that later reappears is
  • quarantined for review instead of being silently granted again.

Revocation uses the normal Cointacted achievement service. If an imported grant has a linked Cointacted point transaction, the service creates the compensating ledger reversal; GamiPress-imported achievement definitions themselves award zero duplicate points.

GamiPress rank types become independent namespaced Cointacted ladders. Each rank retains its exact native order, name, description, image, and publication state. Sequential requirements and unlock-with-points settings remain attached as inactive source semantics: migration never turns on a second rank engine or spends the same points again.

Rank history and current state are migrated separately. Every native rank row in GamiPress User Earnings becomes one replay-safe Cointacted transition with its stable earning ID and original timestamp. After history is replayed, the adapter reconciles each member and rank type against the native current pointer. It also preserves GamiPress's implicit behavior that a member without a stored pointer is currently on the lowest published rank. Explicit manual changes, promotions, and revocations can therefore be represented without fabricating missing historical transitions.

Each ongoing cycle verifies both sides of current-rank state. A saved provider checkpoint is not treated as sufficient when Cointacted's actual current rank has changed afterward; the provider-authoritative cycle creates a new audited transition that repairs the materialized current rank. This keeps immutable rank history intact while preventing a later historical import or manual assignment from leaving the visible current rank stale.

Provider modules are demand-loaded. Ordinary frontend, REST, and unrelated admin requests do not parse or instantiate the GamiPress migration adapter, and the synchronization cron exists only while an enabled ongoing profile needs it.

Automatic award conversion

The Migration Center now has a separate Automation conversion review. Its scan is read-only toward both engines and stores one auditable proposal for each GamiPress automatic point award, deduction, achievement step, and rank requirement. Repeating the scan refreshes the same provider/source record rather than creating duplicates.

Registration and approved-comment point awards or deductions can be classified as exact when they need one activity, use no native activity time window, and have a known points type. Specific-post and post-type comment conditions, the commenter-versus-content-author recipient, point amount, and per-member maximum earnings are retained. An administrator chooses the Cointacted destination and clicks Create disabled draft. The result is always a draft Automation; publishing it is a separate action in the Automation editor after cutover has been reviewed.

The converter does not guess. Multi-activity counts, minutely/hourly/daily or longer native activity windows, GamiPress publishing/deletion lifecycle differences, achievement steps, rank requirements, cross-site targets, and unknown add-on triggers remain visible with their blockers. They cannot be converted automatically in this increment. If the provider definition changes after the review screen loads, conversion stops and refreshes the proposal. If it changes after a draft was created, the proposal becomes a conflict and the existing Cointacted draft is never overwritten. The review row links to that draft; after comparing or editing it, the administrator can explicitly record that the reviewed draft should be kept.

Creating a draft does not disable or modify GamiPress. Before publishing the Cointacted Automation, choose the site's cutover strategy and disable the equivalent native award if Cointacted will become the writer. This prevents both engines from rewarding the same activity.

Was this documentation helpful?Your response helps us improve this page.