1. Introduction
This presentation explores the integration of Google Wallet with Dynamics 365 to generate and manage digital passes for customers. Presented by Muhammad Zeeshan, this project aims to streamline pass issuance and enhance customer experiences.
2. Integration of Google Wallet with Dynamics 365
Google Wallet allows users to store digital passes such as loyalty cards, event tickets, and coupons. Integrating it with Dynamics 365 enables businesses to create and manage these passes automatically for contacts/customers. In this integration, we will:
- Create an Issuer Account to issue passes.
- Create a Service Account to access the Google Wallet API.
- Generate and assign a pass to each contact in Dynamics 365.
- Allow customers to add passes to Google Wallet.
This setup ensures each contact in the CRM receives a unique class and pass, enabling efficient tracking and management of digital memberships.
3. Why Integrate Google Wallet with Dynamics 365?
3.1 Use Cases
- Businesses can issue loyalty cards to customers in CRM.
- Event organizers can issue event tickets.
- Membership-based organizations can provide digital ID cards.
- Retailers can issue discount coupons to specific contacts.
3.2 Key Benefits
- Seamless Pass Management: Automatically generate passes for contacts.
- Enhanced Customer Experience: Customers can store and access passes easily.
- Secure & Scalable: Google Wallet ensures high security and scalability.
4. Advantages & Disadvantages
4.1 Advantages
- Automated Pass Generation: No manual entry needed.
- Secure & Unique Passes: Each contact gets a unique pass.
- Easy Customer Access: One-click pass addition.
- Integration with CRM Workflows: Automatically issue passes based on CRM triggers.
4.2 Disadvantages
- Requires Google Wallet API access (not available in all regions).
- Setup complexity: Requires configuring Google Cloud, IAM, and API calls.
- Limited customization: Google Wallet imposes design restrictions.
5. Technical Implementation
5.1 Step 1: Create a Google Wallet Issuer Account
- Go to Google Wallet API Console.
- Click “Create Issuer Account”.
- Fill in required details (Business Name, Contact Info, etc.).
- Save your Issuer ID (e.g., 3388000002).
5.2 Step 2: Create a Service Account & Download JSON File
- Open Google Cloud Console.
- Go to IAM & Admin > Service Accounts.
- Click “Create Service Account”.
- Assign a Name & Description (e.g., GoogleWalletService).
- Under Permissions, grant:
- Wallet Objects Viewer
- Wallet Objects Editor
- Download the JSON Key File (required for API authentication).


5.3 Step 3: Grant Service Account Permissions
- Go to the Google Wallet Console.
- Click on your Issuer Account.
- Under “Permissions”, add your Service Account Email (e.g., service-account@project-id.iam.gserviceaccount.com).
- Grant Editor access.
5.4 Step 4: Generate & Display “Add to Google Wallet” Button
- Once the pass is created, return the Add to Google Wallet Link: https://pay.google.com/gp/v/save/{object_id}.
- Embed this URL as a button in Dynamics 365.
5.5 Steps to Enable Google Wallet API and Create Service Account
- Enable Google Wallet API: Navigate to API & Services in Google Cloud Console, search for Google Wallet API, and click Enable.
- Access API & Services: Manage all APIs related to your project here.
- Create Service Account: Go to Credentials > Create Credentials > Service Account.
- Fill in Service Account Details: Use a name like “GoogleWalletService” and add a description.
- Manage Service Account Settings: Configure options and keys via Management settings.
- Create and Download Keys: Click Manage Keys > Add Key > Create New Key (JSON format) and download the file.
5.6 Steps to Create Issuer Account
- Create Issuer Account: Visit https://pay.google.com/business/console/, click “Create New Business Account”, and enter details. Then, go to Google Wallet API and click “Get Started”.
- Invite Service Account: In the Google Pay Business Console, go to Users > Invite User, and enter the service account email from the JSON file.

6. Authentication Steps for Trial Accounts
For trial accounts, add the user receiving the pass as an authorized user in Google Cloud Console to ensure functionality due to authentication restrictions.
7. Optimized Solution
7.1 Class Approach
- One reusable class (template) for each contact.
- Objects for each contact linked to the class.

7.2 CRM Integration
- Check status before create/update.
- Skip creation or expire objects for inactive contacts.
8. Architecture Overview
8.1 Components
- Google Wallet API (Genericclass, Genericobject)
- C# Application
- CRM System (status retrieval)
8.2 Flow
- Create single class (CreateClass).
- For each contact:
- Check CRM status.
- Create/update object (CreateOrUpdateObject).
8.3 CreateClass Method
- Purpose: Create one reusable class.
- Logic:
- Check if class exists.
- If not, create with template (points, contacts fields).
- Run once, not per contact.
- Key Features:
- Returns classId for object linking.
- Handles errors gracefully.
- Trial Mode: Fully functional in demo mode.
8.4 CreateOrUpdateObject Method
- Purpose: Manage objects per contact.
- Logic:
- Check CRM status:
- Inactive → Skip create or expire object.
- Check CRM status:
- Active → Create/update object.
- Links object to single class via ClassId.
- Key Features:
- Customizes objects (e.g., points, contacts).
- Scales for 100k contacts.
- Trial Mode: Testable with test users.
9. How to Expire a Pass from Google Wallet?
When a contact in Dynamics 365 becomes inactive:
- Expire the pass (moves it to the archived section).
- Hide the pass so it does not appear in the user’s wallet.
9.1 Why Hide Instead of Delete?
Feature | Delete (Not Allowed) | Hide (Best Practice) |
Removes pass fully | No | Yes (from active view) |
User can still see | No | Only in archived section |
Can be restored | No | Yes (if reactivated) |
10. Works in Trial (Demo) Mode
10.1 Capabilities in Demo Mode
- Create single class.
- Generate objects for test users.
- Simulate CRM status logic.
10.2 Limitations
- Passes limited to test users.
- Cannot issue to 100k contacts until publishing mode.
10.3 Strategy
- Test with a subset (e.g., 100 objects).
- Batch processing for scale simulation.
11. The Challenge
- Initial Approach: One class per contact.
- Issue:
- 100k contacts = 100k classes.
- High storage consumption.
- Management complexity.
- Goal: Optimize for scale and efficiency.
- Additional Requirement: Sync with CRM status (active/inactive).
12. How to Use
We’ve developed a web application where customers input their Identification Number and click “Generate Pass” to create a pass linked to their profile. An “Add to Google Wallet” button then allows them to add the pass directly to their Google Wallet account.
13. Project Benefits
- Scalable: Easily pass interface contacts.
- Dynamic: Syncs with CRM status.
- Testable: Works in trial mode also.
- Future-Ready: Easy to update class for all objects.
Conclusion
Integrating Google Wallet with Dynamics 365 streamlines the process of issuing and managing digital passes, enhancing customer engagement and operational efficiency. This implementation provides businesses with a scalable, automated, and secure solution to manage loyalty cards, event tickets, and digital IDs. By leveraging Google Wallet’s API and CRM workflows, organizations can offer a seamless experience to their customers while ensuring easy management of digital assets. With a well-optimized architecture, businesses can efficiently handle large-scale deployments while maintaining synchronization with CRM status updates.
Readmore : Incremental Data Load using Lookup Transformational Tool in SSIS
FAQ’s
Yes, you can generate and assign digital passes to all contacts in Dynamics 365, provided you have the necessary Google Wallet API access and setup.
If a customer becomes inactive, their pass is automatically expired and moved to the archived section in Google Wallet, ensuring that only active customers have valid passes
Google Wallet API availability varies by region. Before implementation, check whether Google Wallet is supported in your business location.