Skip to main content
Moral Trade
FeedDiscoverMessagesCommitments
More▾
ProfileCreate a tradeSaved offersInviteHow it worksSafety
Get startedSign in

Measurement

Measure useful cooperation, not moral worth.

Moral Trade measures whether people understand the service, complete a concrete first action, create reviewable records, progress safely, and return to meaningful work. It does not optimize for time-on-site or rank moral views.

Primary outcome metrics

Activated users

Accounts that complete onboarding and perform a concrete first action, not merely registered emails.

Reviewable records

Offers, previews, invitations, public-good actions, evidence items, and agreements that create inspectable state.

Safe progression

The share of users who reach a next step without a privacy, coercion, evidence, or externality blocker.

Serious invitations

Invitations to plausible counterparties, researchers, organizers, donors, or builders rather than undifferentiated referrals.

Review quality

Evidence-review timing, challenge outcomes, appeal reversals, unresolved disputes, and human-overrule rates.

Service reliability

Route health, error rates, performance budgets, email delivery, job execution, and recovery behavior.

Privacy-safe event taxonomy

Events use route paths, coarse stages, bounded labels, booleans, counts, and buckets. Sensitive text is excluded or redacted before persistence.

Orientation

page_view

Which public routes do visitors reach before choosing a first pilot path?

Allowed metadata: path, referrerPath, navigationType

hero_primary_cta_clicked

Do visitors choose the worked-example route before signup pressure?

Allowed metadata: hrefPath, label, routeFamily

worked_example_opened

Which examples make the mechanism legible enough to inspect details?

Allowed metadata: exampleId, template, routeFamily

Activation

signup_start

Where do visitors begin account creation after seeing the pilot boundaries?

Allowed metadata: path, partnerSlug, primaryGoal

signup_complete

Can serious participants finish a low-friction account setup?

Allowed metadata: partnerSlug, primaryGoal

onboarding_complete

Do new users choose a role, cause area, and first action?

Allowed metadata: participantKind, primaryGoal, firstAction

create_trade_started

Do users draft terms after inspecting examples and safety rules?

Allowed metadata: mode, template, generatedBy

marketplace_tab_viewed

Which public marketplace lane do visitors inspect before creating or cloning terms?

Allowed metadata: marketplaceTab, queryLengthBucket, queryPresent, routeFamily, searchParamKeys

marketplace_filter_applied

Which public filter shapes cause users to narrow the marketplace?

Allowed metadata: filterKeys, marketplaceTab, queryLengthBucket, queryPresent, routeFamily, searchParamKeys

marketplace_seed_template_selected

Which reviewed seed templates help visitors start a draft?

Allowed metadata: liveMetricEligible, routeFamily, template, templateKind

marketplace_create_from_template_started

Do reviewed seed templates become draft starts without implying completed trade volume?

Allowed metadata: generatedBy, liveMetricEligible, mode, routeFamily, template, templateKind

marketplace_intake_triage_routed

Which intake triage route do visitors choose before drafting terms?

Allowed metadata: intakeRoute, liveMetricEligible, routeFamily, routeEligible

marketplace_public_receipt_previewed

Do participants preview an opt-in public receipt before publication?

Allowed metadata: claimKind, liveMetricEligible, proofTier, publicationState, routeFamily

marketplace_public_receipt_published

Do reviewed opt-in public receipts reach publication?

Allowed metadata: claimKind, liveMetricEligible, proofTier, publicationState, routeFamily

marketplace_signed_out_offset_builder_blocked

Does signed-out offset creation avoid dead ends?

Allowed metadata: blockKind, resultStatus, routeFamily, screenFamily

marketplace_advanced_filter_default_expanded_blocked

Are advanced filters collapsed by default?

Allowed metadata: blockKind, routeFamily, screenFamily

marketplace_worked_example_card_overload_blocked

Are worked-example cards lightweight by default?

Allowed metadata: blockKind, routeFamily, screenFamily

marketplace_next_action_corrected

How often do next-action labels need correction?

Allowed metadata: resultStatus, routeFamily, screenFamily

marketplace_direct_donation_parity_used

How often is direct-donation parity mode used?

Allowed metadata: parityMode, routeFamily

clone_example_action

Which worked examples become editable first actions?

Allowed metadata: exampleId, template

wish_profile_started

Do users start broad wish previews before requesting private introductions?

Allowed metadata: causeAreaCount, fieldCount

cohort_interest_started

Which cohort paths attract people willing to invite one serious counterparty?

Allowed metadata: partnerSlug, primaryGoal

Trust and safety

marketplace_public_receipt_revoked

How often are opt-in public receipts revoked?

Allowed metadata: claimKind, liveMetricEligible, publicationState, revocationReasonBucket, routeFamily

marketplace_claim_correction_requested

How often do participants request public claim correction?

Allowed metadata: claimKind, correctionReasonBucket, liveMetricEligible, routeFamily

marketplace_claim_correction_resolved

Are public claim corrections resolved cleanly?

Allowed metadata: claimKind, correctionReasonBucket, liveMetricEligible, resolutionStatus, routeFamily

marketplace_route_simplification_audited

Do public marketplace routes pass the simplification audit?

Allowed metadata: auditStage, resultStatus, routeFamily, screenFamily

marketplace_plain_language_copy_blocked

How often does missing plain-language copy block release?

Allowed metadata: blockKind, routeFamily, screenFamily

marketplace_internal_jargon_primary_copy_blocked

How often do internal terms appear in primary participant copy?

Allowed metadata: blockKind, routeFamily, screenFamily

marketplace_route_fallback_diagnostics_blocked

Do route fallback diagnostics stay out of primary copy?

Allowed metadata: blockKind, routeFamily, screenFamily

marketplace_factor_code_primary_copy_blocked

Do factor codes or internal enums leak into primary copy?

Allowed metadata: blockKind, routeFamily, screenFamily

marketplace_impact_score_default_surface_blocked

Are moral-looking impact-score default surfaces blocked?

Allowed metadata: blockKind, routeFamily, screenFamily

marketplace_long_duration_default_example_blocked

Are long-duration pledge defaults blocked?

Allowed metadata: blockKind, routeFamily, screenFamily

marketplace_task_card_primary_action_blocked

Do task cards keep one primary action?

Allowed metadata: blockKind, routeFamily, screenFamily

marketplace_safe_template_default_hidden_fact_blocked

Are material safe-template defaults disclosed before lock?

Allowed metadata: blockKind, policyArea, routeFamily, screenFamily

marketplace_term_map_inconsistency_blocked

Does the participant-facing term map stay stable?

Allowed metadata: blockKind, policyArea, routeFamily, screenFamily

marketplace_recipient_association_blocked

How often does recipient association block publication?

Allowed metadata: claimKind, policyArea, routeFamily

marketplace_causal_wording_blocked

How often is stronger causal wording blocked?

Allowed metadata: claimKind, policyArea, routeFamily

marketplace_personal_contribution_reuse_blocked

How often is reused personal contribution blocked?

Allowed metadata: claimKind, displayBucket, routeFamily

marketplace_net_personal_contribution_displayed

Are net personal contribution displays attribution-safe?

Allowed metadata: claimKind, displayBucket, routeFamily

marketplace_reimbursement_subsidy_disclosure_blocked

How often are reimbursement or subsidy disclosures blocking?

Allowed metadata: claimKind, displayBucket, routeFamily

marketplace_direct_donation_parity_non_preference_blocked

How often is parity non-preference enforcement blocking?

Allowed metadata: blockKind, parityMode, routeFamily

marketplace_sensitive_action_redacted

Are sensitive action details redacted from public receipts?

Allowed metadata: actionKind, policyArea, routeFamily

marketplace_exact_action_publication_confirmed

When exact action publication happens, was separate confirmation present?

Allowed metadata: actionKind, policyArea, routeFamily

marketplace_publication_pressure_reported

Are participants reporting pressure to publish receipts?

Allowed metadata: policyArea, reasonBucket, routeFamily

marketplace_moral_score_language_blocked

Is moral-score or platform-endorsement language blocked?

Allowed metadata: blockKind, routeFamily, screenFamily

marketplace_anti_gamification_blocked

Are engagement and reputation mechanics blocked for receipt publication?

Allowed metadata: blockKind, routeFamily, screenFamily

marketplace_publication_as_trade_term_blocked

Is public receipt publication blocked as a trade condition?

Allowed metadata: blockKind, policyArea, routeFamily

marketplace_verification_status_checked

Do public receipt verification handles resolve to safe statuses?

Allowed metadata: claimKind, resultStatus, routeFamily, visibilityState

privacy_grant_changed

Are people able to understand and change field-level sharing grants?

Allowed metadata: accessLevel, fieldCount, decision

detail_request_submitted

Do broad previews lead to explicit, consent-gated detail requests?

Allowed metadata: targetKind, candidateBucket, bothConsented

detail_request_resolved

Can detail requests resolve without pressure or hidden disclosure?

Allowed metadata: targetKind, decision, stage

safety_report_submitted

Where do visitors flag coercion, fraud, pressure, or externality concerns?

Allowed metadata: targetKind, stage

match_consent_recorded

Do proposed introductions record both-party consent before identity-specific disclosure?

Allowed metadata: bothConsented, stage, hasMatch

background_scan_run

Can operators review broad matching signals without raw private text?

Allowed metadata: matchesCreated, candidateBucket, taskCount

Performance

performance_metric_recorded

Do core routes stay fast enough for mobile and first-time visitors?

Allowed metadata: metricName, metricRating, metricValueBucket

Public goods

donation_route_clicked

Do visitors reach external donation routes from clear non-custodial pages?

Allowed metadata: targetKind, hasTargetUrl, causeAreas

donation_logged

Can users record external-payment evidence for review?

Allowed metadata: causeAreas, stage, hasSession

evidence_submission_started

Where do users begin proof submission for commitments or public-good actions?

Allowed metadata: targetKind, stage

public_good_action_logged

Are shared public-good actions becoming reviewable records?

Allowed metadata: causeAreas, stage, taskCount

Data the service refuses to use

  • Raw private wishes, asks, constraints, messages, or source notes in analytics events.
  • Email addresses, phone numbers, contact details, receipts, or evidence bodies in public reports.
  • A platform score purporting to rank people, causes, moral views, or overall moral worth.
  • Small-sample public metrics that make private participants or cases easy to infer.
  • Engagement metrics used as a substitute for mutually preferred outcomes or reviewed completion.

Measurement guardrails

  • Measure pilot clarity, not moral worth. Funnel events may show whether visitors find the right pilot path; they must not score users, causes, offers, or counterparties by moral value.
  • Keep raw private content out. Exact wishes, source notes, private constraints, contact details, emails, receipts, prompts, and counterparty-specific messages are forbidden in analytics payloads.
  • Use aggregate evidence for product decisions. Measurement should improve copy, route order, review operations, and performance; it must not create engagement feeds, hidden ranking, or autonomous outreach.
  • Separate live metrics from demos and templates. Marketplace analytics may count reviewed seed-template and demo interactions as activation signals, but they must not inflate live offers, completed agreements, sponsor leverage, or moral-trade volume.
  • Strip location-bearing URL detail. Analytics may keep route paths and coarse referrer paths, but query strings, hashes, raw search text, and UTM detail are sanitized or bucketed before storage.
  • Bucket performance data. Web Vitals are recorded as metric name, rating, and value bucket, not raw traces or user-identifying diagnostic detail.
  • Honor analytics objection. If the analytics opt-out cookie is present, optional attribution is cleared and funnel ingestion exits without writing a row; safety, security, payment, and rights-request records remain separately governed.

Performance baseline

Route health is checked on mobile and desktop against explicit loading, content, and script budgets. The executable baseline command is MORALTRADE_BASE_URL=http://127.0.0.1:3000 npm run measure:routes.

DOM content loaded target: 10000ms. Load target: 15000ms. Minimum body text: 400 characters.

Accountability

Measurement is useful only when participants can inspect the surrounding privacy, reliability, validation, transparency, and update commitments.

PrivacyService statusTrust boundariesService updates
Moral Trade

Do more good together.

Offer an action in exchange for an action you value.

Explore

  • Feed
  • Discover
  • Create a trade
  • Messages
  • Commitments

Trust

  • Safety
  • Credibility
  • Transparency
  • Service status

Help

  • How it works
  • Contact

About

  • Team and governance
  • Research
  • Support the project

Moral Trade does not provide legal, tax, investment, or blanket impact certification. Payment, custody, authorization, settlement, and refund capabilities are disclosed at the point where a user could rely on them.

© 2026 Moral Trade

PrivacyTermsAccessibilityContact