Activity
Mon
Wed
Fri
Sun
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
What is this?
Less
More

Owned by Igor

Integration Mastery Cohort

37 members β€’ Free

Learn Integrations in 8 weeks.

90-day sprint

28 members β€’ Free

Memberships

AI Automation Agency Hub

275.1k members β€’ Free

Notion Wizards

5.2k members β€’ Free

Scaling with Stories

6 members β€’ Free

Skoolers

181.9k members β€’ Free

43 contributions to Integration Mastery Cohort
How is it going with Auth Configurations?
Hey everyone, I will host a Q&A this Sunday to answer all questions. If you have topics that you find hard around Authentication and what we've done, ask them below so I can prepare some good answers!
0 likes β€’ 5d
@Gerald Spica great question! It's for sure has nothing to do with being logged in. We have 2 orgs. Org A makes the callout and Org B accepts the callout. The permissions on Org B are controlled by the External Client App. That's the only thing that controls the permissions. And that's also the gateway into your org. Now to your example. You have a user in Org B and you want to make callouts to this org from Firebase. He can't just "call Salesforce". He needs to call some API (e.g. REST API in this case). Also it's not really him who is going to call your org, right? It's the code from Firebase that he'll write. So we have firebase -> Salesforce integration. To access salesforce as a user you'd need to put login and password in the browser. But since we have once code calling another code, we can't just put the credentials, since there is no browser window. So instead, we use client_id, client_secret and tokens from the External Client App. We take those secrets, put it into our Firebase code and now we can write code there that calls our Salesforce org. And at no point we need to use any specific user or passwords. Does it help? :) I am happy to explain more if you have questions!
0 likes β€’ 4d
@Gerald Spica awesome!
Week 5 - Auth & Named Credentials
Welcome to week 5! Write your homework here and I'll give you some feedback.
1 like β€’ 4d
@Nadia Bica as a rule of thumb, in most cases it's better not to have any try-catch at all. I'd recommend not adding them. You should only add them if you have some extra reasons to add them. But in general, it's better not to.
0 likes β€’ 4d
@Nadia Bica I also left some comments
Week #3 - Callouts from Triggers
This is an exciting week! We'll build some real projects using Stripe. Because that's literally the only way to learn Integrations. But I also talked a bit more about Architecture. If you are more advanced, I really recommend that you watch this video and try to play around with this architecture. The schedule for this week is the same: 1. Alon's Weekly Session Tuesday 7 p.m. EDT 2. My Weekly Session Tuesday 7 p.m. CET No Sunday session this time. Just post any questions here in the community and we'll all help you Also, I have one ask... If you are enjoying the cohort, could you leave me a review? It takes 30 seconds, and I'll send you some cool bonuses. ​Click here to leave the review​ And of course, do the homework and post here down here in the comments πŸ‘‡πŸ‘‡πŸ‘‡
1 like β€’ 5d
@Oleh Faryna I think I checked it and it looked good haha :D
1 like β€’ 5d
@Oleh Faryna wrote some comments to the questions :)
Custom Logger Issue
Hello everyone, I am having issues with my custom logger When I add logger to trigger handler and Queable not able to detect logs. My code for Trigger Handler public without sharing class ContactTriggerHandler { public void afterInsert(List<Contact> newContacts) { CustomLogger.log( CustomLogger.LogLevel.DEBUG, 'afterInsert handler invoked. Total incoming contacts: ' + newContacts.size(), null, null, 'ContactTriggerHandler' ); List<Contact> contactsWithEmail = new List<Contact>(); for (Contact c : newContacts) { if (String.isNotBlank(c.Email)) { contactsWithEmail.add(c); } } if (!contactsWithEmail.isEmpty()) { System.enqueueJob(new StripeCustomerQueueable(contactsWithEmail)); } } } ============== Queable Class public without sharing class StripeCustomerQueueable implements Queueable, Database.AllowsCallouts { private Set<Id> contactIds; public StripeCustomerQueueable(List<Contact> contacts) { this.contactIds = new Map<Id, Contact>(contacts).keySet(); CustomLogger.log( CustomLogger.LogLevel.DEBUG, 'Queueable created. Contact IDs = ' + this.contactIds.size(), null, null, 'StripeCustomerQueueable' ); } public void execute(QueueableContext context) { CustomLogger.log( CustomLogger.LogLevel.INFO, 'StripeCustomerQueueable execution started.', null, null, 'StripeCustomerQueueable' ); List<Contact> contactsFromDb = [ SELECT Id, FirstName, LastName, Email, Phone, Description FROM Contact WHERE Id IN :contactIds ]; CustomLogger.log( CustomLogger.LogLevel.DEBUG, 'Fetched ' + contactsFromDb.size() + ' contacts from DB.', null, null, 'StripeCustomerQueueable' ); List<Contact> contactsToUpdate = new List<Contact>(); StripeCallout stripeCallout = new StripeCallout(); for (Contact c : contactsFromDb) { try { String stripeCustomerId = stripeCallout.createCustomer(c); if (String.isNotBlank(stripeCustomerId)) { contactsToUpdate.add(new Contact( Id = c.Id, Stripe_Customer_Id__c = stripeCustomerId )); CustomLogger.log(
0 likes β€’ 5d
Are you sure you are inserting the logs? How does you CustomLogger class look like?
0 likes β€’ 5d
@Nadia Bica just one more week haha :D
1 like β€’ 5d
@Fahmeeda Begum done :)
1-10 of 43
Igor Kudryk
5
272points to level up
@igor-kudryk-2778
Developer that launches courses

Active 16h ago
Joined Oct 18, 2025
Munich
Powered by