How to map encrypted URL parameter (pid) to AJO form hidden field for profile identity stitching? | Community
Skip to main content
Level 2
July 14, 2026
Question

How to map encrypted URL parameter (pid) to AJO form hidden field for profile identity stitching?

  • July 14, 2026
  • 2 replies
  • 45 views

Hi Adobe Community,

We're currently implementing a preference center/unsubscribe landing page 
using AJO campaigns with URL parameter encryption enabled via the 
Key Registry.

**Current Setup:**
- AJO email campaign uses the encrypt() helper in personalization editor
- Email links include encrypted parameters: ?pid=v1.towEToq9cGLgo9x4...
- Landing page is built using AJO Forms (not custom HTML)
- Form is tied to an AEP profile-enabled dataset for capturing preferences

**What We're Trying to Achieve:**
When a user clicks the email link and lands on the form page:
1. The encrypted pid (profile/identity) should be captured from the URL
2. Assigned to a form hidden field automatically
3. When the form is submitted, the pid should be mapped to a profile 
   identity namespace (Email or CRM ID)
4. Form submission data should stitch to the existing profile in AEP 
   for preference updates

**Our Questions:**

1. **In AJO Forms Designer** - Can we configure a hidden field to 
   automatically capture and map URL parameters to identity namespaces? 
   Or do hidden fields only support static default values?

2. **Encryption Handling** - Does AJO Forms handle decryption of encrypted 
   URL parameters automatically, or do we need to:
   - Decrypt the pid on a backend API first?
   - Decrypt on the landing page frontend (JavaScript)?

3. **Identity Stitching** - If we map the pid to a hidden field, will AEP 
   automatically stitch the form submission to the correct profile using 
   the identity in the dataset's identityMap?

4. **Best Practice** - What's the recommended approach for AJO Forms 
   + encrypted URL parameters + profile stitching workflow?

Any guidance or examples would be appreciated!
 

    2 replies

    SatheeskannaK
    Community Advisor
    Community Advisor
    July 16, 2026

    Hi ​@uk685 

    Find my comments.

    1. **In AJO Forms Designer** - Can we configure a hidden field to 
       automatically capture and map URL parameters to identity namespaces? 
       Or do hidden fields only support static default values?

    Ans: In Forms Designer, a field only supports a static "Default value". Refer: https://experienceleague.adobe.com/en/docs/journey-optimizer/using/content-management/landing-pages/lp-forms#define-fields

    2. **Encryption Handling** - Does AJO Forms handle decryption of encrypted 
       URL parameters automatically, or do we need to:
       - Decrypt the pid on a backend API first?
       - Decrypt on the landing page frontend (JavaScript)?

    Ans: Decryption must be handled outside of AJO landing pages. The recommended pattern is to use an Adobe I/O Runtime function or custom microservice to decrypt the pid server-side and return the plain identity to the page, keeping the key everything secure. Refer: https://experienceleague.adobe.com/en/docs/journey-optimizer/using/channels/email/configure-email/list-unsubscribe

    3. **Identity Stitching** - If we map the pid to a hidden field, will AEP 
       automatically stitch the form submission to the correct profile using 
       the identity in the dataset's identityMap?

    Ans: In Forms Designer, when you map a field to a "profile identity field" from the linked dataset's schema (identity fields show as Required in the attribute list), and that dataset is Profile-enabled, submissions flow through the normal streaming connection → source flow → dataset path. Refer: https://experienceleague.adobe.com/en/docs/journey-optimizer/using/content-management/landing-pages/lp-forms#define-fields

    4. **Best Practice** - What's the recommended approach for AJO Forms 
       + encrypted URL parameters + profile stitching workflow?

    Ans: I would suggest to encrypt the identity value in the email link. On the landing page, hide the identity-mapped field and use custom JS to grab the encrypted pid from the URL, send it to a backend endpoint you control for decryption, and drop the plaintext result into that field before submit. From there, AJO's normal profile-enabled dataset ingestion handles the identity stitching — no extra config needed. There might be other ways.  Refer: https://experienceleague.adobe.com/en/docs/journey-optimizer/using/content-management/personalization/aep-data-perso/url-parameter-encryption (Limited availability)

    https://experienceleague.adobe.com/en/docs/journey-optimizer/using/content-management/landing-pages/landing-pages-design/lp-custom-js

     

    Thanks, Sathees
    Level 1
    July 17, 2026

    @SatheeskannaK 
     

    I have a question regarding AJO Forms and Experience Event datasets.

    When an AJO Form writes data to an XDM Experience Event dataset through a Form Preset, should the platform automatically generate the mandatory root fields _id and timestamp?

    If yes, is there any specific configuration required to enable this behavior?

    If not, what is the recommended approach for customers to populate these mandatory XDM fields, considering that the Form Designer does not appear to provide a mechanism to dynamically generate values for _id or timestamp?

    Currently, data ingestion into my streaming Experience Event dataset is failing with the error:

    "_id is missing"

    At the same time, I can see the Adobe OOTB web.formFilledOut event being generated successfully with both _id and timestamp populated.

    Could you please clarify whether this is expected behavior, a configuration issue, or a known limitation when using AJO Forms with  Experience Event datasets?