Private Campaigns

Distribute rewards privately with confidential campaign configurations

Private campaigns are campaigns where the configuration and rules are hidden from public view. Only authenticated users—such as the campaign creator or specifically authorized addresses—can access campaign details. This feature is particularly useful for confidential airdrops, private payments, or any distribution where discretion is required.

Merkl processes substantial transaction volume across hundreds of tokens and campaigns. Private campaigns are mixed among all other public campaigns flowing through the same Distributor contract, creating a large anonymity set. This statistical diversity makes it computationally difficult to correlate specific deposits with individual claims or transfers, providing strong privacy guarantees for your distributions.

Why Use Private Campaigns?

Private campaigns offer several key benefits:

  • Confidentiality: Campaign parameters, distribution rules, and eligibility criteria remain hidden from the public

  • Privacy Protection: Since Merkl aggregates all user funds in the Distributor contract, no one can correlate deposits into Merkl with individual claims or transfers—ensuring financial privacy

  • Flexible Access Control: Granular control over who can view campaign details—grant access to specific addresses, auditors, regulatory bodies, or third-party partners while keeping the campaign private from the general public

  • Compliance & Auditing: Enable authorized auditors or compliance officers to review campaign parameters without making the information publicly visible

Creating a Private Campaign

Using Campaign Templates

The easiest way to create a private campaign is to use the dedicated private campaign templates available in Merkl Studioarrow-up-right. These templates automatically include the privacy configuration, so you don't need to manually configure the privacy settings.

Private campaign templates on Merkl Studio

Manual Configuration

circle-info

For a comprehensive understanding of campaign configurations, refer to the Campaign Configuration page.

To manually add privacy to any campaign configuration, include the privacy option in your campaign config:

Configuration Parameters

recipientsCanView (boolean):

  • true: Recipients can view the campaign details relevant to their allocation

  • false: Only the creator and authorized addresses can view any campaign information

authorizedAddresses (array):

  • Array of objects specifying authorized viewers with their permissions

  • Each object contains:

    • address (string): Ethereum address allowed to view the campaign

    • canManageAccess (boolean): Whether this address can grant/revoke access for other addresses

  • Leave empty ([]) to restrict access to only the creator (and recipients if enabled)

Private Transfer Examples

Transfer campaigns allow you to send rewards directly to a specific address. When combined with privacy settings, these transfers benefit from Merkl's anonymity set—no one can correlate the deposit into the Distributor contract with the recipient's claim.

Example Configuration:

About Private Campaigns Finality

Private campaigns follow the same workflow as any other Merkl campaign. Any campaign type can be made private and supports the same features—distribution methods, scoring types, and customization options. Private campaigns also follow the standard reward computation and update cycle, meaning rewards may only become pending after 2 hours and claimable after an update cycle (typically 8 hours). See the Technical Overview for details on reward computes and updates.

Authentication and Access Management

Wallet Signature Authentication

Access to private campaigns params and details is secured through wallet signature authentication. Users must sign a message with their wallet to generate a JWT (JSON Web Token) session, which authenticates them on the frontend and grants access to view private campaign details on the opportunity page.

Wallet signature authentication for private campaigns (note the leaf icon)
circle-info

Frontend Integration: The JWT-based authentication structure allows private campaigns to be integrated into any frontend, not just the Merkl app. If you're building a custom UI on top of Merkl for private payments or airdrops, please contact us to discuss integration details.

Managing Access

Authorized addresses with canManageAccess: true can grant or revoke viewing access for additional addresses. The campaign creator always has full management privileges. This hierarchical permission model enables collaborative management while maintaining creator control.

Recipients View

When recipientsCanView is set to false, recipients see "Private campaigns" in their User Dashboard and can claim rewards without viewing campaign details or the reason for their allocation.

Private campaigns in the User Dashboard

Fees

Private campaigns follow the same fee model as standard Merkl campaigns. Transfer campaigns are currently free on Merkl.

Best Practices

  • Use Multisig Carefully: If you're creating a private campaign from a multisig wallet, you MUST add other authorized addresses to the authorizedAddresses array. Multisig wallets cannot directly sign authentication messages, so individual signer addresses need to be added as authorized viewers.

  • Round Amounts: Use round amounts (e.g., 1,000 or 10,000) for transfers. Unique amounts like 846.37 tokens make it easier to correlate deposits with claims. Round numbers blend better within Merkl's transaction volume.

  • Consider Recipients: Decide whether recipients should see their allocations based on your privacy requirements

Last updated