Updated for Summer '26
New to this track? Our Salesforce Certified Platform Foundations exam prep is the recommended first step. See our certification path to understand where this certification fits. The Salesforce Certified Platform Developer exam weights Logic and Process Automation most heavily (25%) — see the full breakdown, study tips, and practice questions below. See our full study guide for deep section coverage. Ready to book? Read our exam tips and study plan.
Quick Knowledge Check
A developer writes a trigger that runs a SOQL query inside a for loop. What governor limit risk does this create?
▶ Reveal answer
SOQL inside a loop will hit the 100 SOQL query limit if the loop iterates over more than 100 records. Fix: run one SOQL query before the loop using WHERE Id IN :idSet, store results in a Map<Id, SObject>, and look up records inside the loop with no additional queries.
15 full practice questions with explanations are below ↓
Join 3.8K+ passed this month • Updated for 2026 • No sign-up required
$200 exam • 68% passing score • Free practice

Written & verified by Krishna Mohan
5× Salesforce Certified · 12+ years in data engineering & Salesforce · Updated for Summer '26
Who is the Platform Developer I exam for?
- Developers new to Salesforce: You have programming experience in Java, JavaScript, or another language and want to build on the Salesforce platform using Apex and LWC.
- Admins transitioning to development: You passed ADM-201 and want to move beyond declarative tools into custom code, triggers, and integrations.
- Full-stack developers at SI partners: Your firm requires PD1 certification for project staffing, and you need to validate Salesforce-specific development skills.
Exam Fees & Registration
Exam Fee
$200
One-time registration fee
Retake Fee
$100
If you need to retake the exam
Comparing certs? View all Salesforce exam fees in one place →
Certification Validity
Your Salesforce Certified Platform Developer certification is valid for 3 years from the date you pass the exam. You'll need to maintain your certification through continuing education or retake the exam.
How to Register
Register for the Salesforce Certified Platform Developer (PD1) exam through the official Salesforce certification portal.
Register for ExamExam data verification: questions, duration, passing score, fees, and section coverage were checked against official source references on .
Official sources: Exam guide·Salesforce exam pricing·Independent prep resource; no braindumps or leaked exam questions.
Salesforce PD1 Certification: Free Practice Exam & Study Guide (Summer '26)
The Platform Developer I certification validates your skills in developing custom applications on the Salesforce platform using Apex and Visualforce.
Recommended Prerequisites
We recommend completing this certification first to prepare you better.
Salesforce Certified Platform Developer Exam Weightage by Section
Exam Topics
Why This Certification Matters
PD1 is the standard developer cert.
It is required for many technical and architect paths.
Exam Tips
- 1Logic and User Interface are 50% combined—Apex triggers, LWC, and when to use each.
- 2Know governor limits: SOQL 100, DML 150, etc., and how to avoid hitting them.
- 3Testing: minimum code coverage, positive and negative tests, Test.runAs().
- 4Understand @AuraEnabled, @InvocableMethod, and when to use REST vs SOAP.
Prerequisites
- •Programming experience (Java, C#, or similar)
- •Administrator or App Builder recommended
Focus Areas
- •Apex and Triggers
- •Lightning Web Components
- •Testing and Deployment
- •Governor Limits
Study Strategy
Code daily in a dev org.
Build a small LWC + Apex feature and write tests.
Memorize key governor limits and practice debugging scenarios.
Exam Format and First-Attempt Readiness
The Salesforce Certified Platform Developer exam has 60 questions in 105 min, passing score 68%. Most Salesforce exams test scenario-based decisions — focus on when to use each feature, not just terms.
- Study Logic and Process Automation and User Interface first — together they carry 50% of the exam.
- Do timed question sets. Build pacing and confidence.
- Review why wrong answers are wrong. It improves scenario reasoning.
- Book the exam once your mock scores are steady above 68%.
Suggested study timeline for PD1 (6–10 weeks)
Suggested study timeline for PD1 (6–10 weeks)
PD1 requires hands-on coding practice — not just reading. Budget time for Apex exercises in a Developer Edition org alongside study.
- Weeks 1–2: Salesforce Fundamentals & Data Modelling (20%) — objects, relationships, schema design, SOQL basics
- Weeks 2–3: Logic & Process Automation (23%) — Apex basics, governor limits, bulkification patterns
- Weeks 3–5: Apex Triggers & Classes (24%) — before/after triggers, handler pattern, async Apex (future, batch, queueable)
- Weeks 5–6: Testing & Debugging (22%) — test class structure, mock callouts, code coverage, debug logs
- Weeks 6–7: UI & Deployment (11%) — LWC basics, Aura, Visualforce, change sets, sandboxes
- Weeks 7–8: Full mock exams and targeted weak-area review
Already an admin? Reduce Weeks 1–2 to 3–4 days — you already know the data model and platform fundamentals.
Is the PD1 Exam Hard?
Is the PD1 Exam Hard?
The Salesforce Platform Developer I exam is considered moderately difficult — harder than ADM-201, but accessible to candidates with 3–6 months of real Apex development experience. The challenge is that most questions present actual code and require you to reason about governor limits, async patterns, and trigger behaviour under realistic conditions.
- 60 scored questions in 110 minutes — roughly 1.8 minutes per question.
- 68% passing score — you can miss up to 19 questions and still pass.
- Code-heavy — expect 30–40% of questions to include Apex code snippets.
- Scenario-based — most questions describe a business or technical requirement and ask for the right approach.
- No multiple-select trick — PD1 uses single-best-answer format (unlike ADM-201 which has some multiple-select).
Pass Rate Guidance
Candidates who pass PD1 typically score 78%+ on at least 3 full-length mock exams before booking. If you’re scoring below 70% on mocks, focus on governor limits and bulkification — those two topics cover over 30% of the exam combined.
PD1 Exam Format Explained
PD1 Exam Format Explained
The exam is proctored online or at a test centre through Webassessor. Here is the format:
Exam logistics
| Fee | $200 |
| Retake | $100 |
| Passing score | 68% |
| Questions | 60 multiple-choice |
| Time | 105 min |
How Many Questions Are Code-Based?
About 30-40% of questions include Apex code snippets or pseudocode. You need to read the code, identify issues (governor limit violations, bulkification failures, incorrect trigger context), and select the correct fix or outcome. Another 30-40% are scenario-based without code, describing a business requirement and asking which approach is best.
Best Way to Pass on Your First Attempt
- Write real Apex code: Set up a Developer Edition org and build triggers, batch classes, and test classes. Reading alone is not sufficient for PD1.
- Memorise governor limits: 100 SOQL queries, 150 DML statements, 50K query rows, 6MB heap, 10s CPU. These numbers appear in nearly every mock and the real exam.
- Master the trigger handler pattern: One trigger per object, all logic in a handler class. Know when to use before vs after triggers and the full order of execution.
- Practice reading code under time pressure: At 1.8 minutes per question, you need to parse code snippets quickly. Time yourself on practice exams.
Platform Developer I: Key Concepts for the Exam
Apex Governor Limits & the Limits Class
Governor limits prevent any one transaction from monopolising shared platform resources. Key synchronous limits: 100 SOQL queries, 150 DML statements, 50,000 records returned from queries, 6 MB heap size, 10 seconds CPU time. Asynchronous limits are generally 2× the synchronous limits. Use Limits.getQueries() and Limits.getLimitQueries() from the Apex Common Classes (the Limits class) to check usage at runtime. The exam tests which limit applies to a given code scenario and what to change.
Bulkification: Never Put SOQL or DML Inside a Loop
The core Apex pattern: query records before loops using a single SOQL with IN :triggerIdSet, collect changes in a List or Map inside loops, then perform DML after loops. Map<Id, SObject> is the workhorse — used to relate trigger records to queried related records by Id. Use Database.insert(records, false) for partial success (returns SaveResult array). The exam presents code with SOQL/DML in a loop and asks you to identify the issue or fix it.
Apex Triggers: Order of Execution & Handler Pattern
Before triggers fire before the record is saved — use them to validate or modify field values before save (changes to Trigger.new persist without extra DML). After triggers fire after the record is committed — use them when you need the record Id or to update related records. Key context variables: Trigger.new, Trigger.old (not available on insert), Trigger.isInsert, Trigger.isUpdate. Best practice: one trigger per object, all logic delegated to a handler class. The Order of Execution for a save: validation rules → before triggers → system validation → after triggers → workflow rules → DML commit → flows (record-triggered).
SOQL: Relationships, Aggregates & SOSL
Child-to-parent query: SELECT Id, Account.Name FROM Contact (dot notation). Parent-to-child: SELECT Id, (SELECT Id FROM Contacts) FROM Account (subquery). Aggregate functions: COUNT(), SUM(), AVG() — require GROUP BY. SOSL searches multiple objects simultaneously: FIND ’term’ IN ALL FIELDS RETURNING Account, Contact. Use SOSL for cross-object searches; use SOQL when you know the object.
Process Automation: Flow vs. Apex Triggers
The exam tests when to use declarative automation (Flow) vs. programmatic automation (Apex Triggers). Use Flow for standard CRUD operations, approval automation, and complex UI flows without code. Use Apex Triggers when you need cross-object logic beyond Flow’s capabilities, governor limit control, or callout scheduling. Both can fire on the same record — the Order of Execution determines which runs first (Flow runs before After Triggers in record-triggered contexts). Key PD1 topic: if Flow can do it declaratively, prefer Flow; if it needs Apex Classes, Limits, or Database class methods, use Apex.
Testing Framework: SeeAllData, Test.startTest & HttpCalloutMock
Minimum 75% code coverage required across all Apex to deploy to production. Test classes use @isTest. Test data is isolated by default (SeeAllData=false) — create all test data explicitly using @TestSetup or within each test method. Test.startTest() resets governor limits and marks the start of the tested code; Test.stopTest() forces async operations (future methods, batch jobs) to complete synchronously. Mock HTTP callouts with Test.setMock(HttpCalloutMock.class, mockImpl). @TestVisible exposes private members to test classes without making them public.
Lightning Web Components (LWC): Wire Service & @AuraEnabled
LWC is the modern Salesforce UI framework. Key decorators: @track (reactive private properties), @api (public properties exposed to parent), @wire (reactive Apex method calls). The @wire decorator connects an LWC to an Apex method marked @AuraEnabled(cacheable=true) — the cacheable flag is required for @wire. Use lightning-record-form for standard record CRUD without writing Apex. Communication between components uses CustomEvent (child to parent) and LightningMessageService (unrelated components).
Core Apex Code Patterns for PD1
The PD1 exam presents real Apex code in 30–40% of questions. These three patterns appear most frequently — understand them at a read-and-reason level, not just from a definition.
1. Bulk-Safe Trigger with Handler Class
One trigger per object, all logic in a handler class. SOQL runs once outside the loop; DML runs once after the loop.
// AccountTrigger.triggertrigger AccountTrigger on Account (before insert, after insert) { AccountTriggerHandler handler = new AccountTriggerHandler(); if (Trigger.isBefore && Trigger.isInsert) { handler.onBeforeInsert(Trigger.new); } if (Trigger.isAfter && Trigger.isInsert) { handler.onAfterInsert(Trigger.new); }} // AccountTriggerHandler.clspublic class AccountTriggerHandler { public void onBeforeInsert(List<Account> newAccounts) { // Validate or set field values — no DML needed, changes persist for (Account acc : newAccounts) { if (acc.Industry == null) { acc.Industry = 'Technology'; } } } public void onAfterInsert(List<Account> newAccounts) { // Collect Ids, run one SOQL, perform one DML outside loop Set<Id> accountIds = new Map<Id, Account>(newAccounts).keySet(); List<Contact> contacts = [SELECT Id, AccountId FROM Contact WHERE AccountId IN :accountIds]; List<Contact> toUpdate = new List<Contact>(); for (Contact c : contacts) { c.Description = 'Processed'; toUpdate.add(c); } update toUpdate; // Single DML — not inside loop }}2. Database Class with Partial Success & Error Handling
Use Database.insert(records, false) to allow partial success; inspect the SaveResult array for errors.
List<Account> accountsToInsert = new List<Account>();accountsToInsert.add(new Account(Name = 'Valid Account'));accountsToInsert.add(new Account()); // Missing required field — will fail // allOrNone = false → partial success allowedDatabase.SaveResult[] results = Database.insert(accountsToInsert, false); for (Database.SaveResult sr : results) { if (sr.isSuccess()) { System.debug('Inserted: ' + sr.getId()); } else { for (Database.Error err : sr.getErrors()) { System.debug('Error: ' + err.getMessage() + ' Fields: ' + err.getFields()); } }}3. Test Class with HttpCalloutMock
HTTP callouts cannot run in tests — implement HttpCalloutMock and register it with Test.setMock().
// Mock implementation@isTestglobal class MockHttpCallout implements HttpCalloutMock { global HTTPResponse respond(HTTPRequest req) { HttpResponse res = new HttpResponse(); res.setHeader('Content-Type', 'application/json'); res.setBody('{"status":"success"}'); res.setStatusCode(200); return res; }} // Test class@isTestprivate class CalloutServiceTest { @isTest static void testCalloutSuccess() { Test.setMock(HttpCalloutMock.class, new MockHttpCallout()); Test.startTest(); String result = CalloutService.makeCallout('https://api.example.com'); Test.stopTest(); // Forces async to complete System.assertEquals('success', result, 'Expected success status'); }}All automation that fires on a single DML operation — before/after triggers, Record-Triggered Flows, and Process Builder — runs inside one execution context. Governor limits (SOQL queries, DML statements, CPU time) accumulate across all of them, not per-automation. This is why bulkification and avoiding recursive updates matters for PD1.
How to Pass the Platform Developer I (PD1) Exam
PD1 is a code-heavy exam where most questions present Apex code or describe a development scenario and ask you to identify the issue, fix, or best practice. Understanding governor limits, bulkification patterns, and test methodology at a deep practical level is what separates passing candidates from failing ones.
Governor Limit Questions — the Pattern to Recognise
The exam will show you Apex code and ask “what is wrong with this code?” The answer is almost always SOQL or DML inside a for loop. Look for for (Account a : accounts) { insert contact; } — that’s DML in a loop, and it will hit the 150 DML statement limit. The fix: collect records in a List inside the loop, then call insert contactList; after the loop. For SOQL: use Maps populated with a single query before the loop, not a query inside the loop.
Testing Questions — the Three Rules to Memorise
(1) Minimum 75% code coverage across the entire org (not per class) to deploy. (2) Test data must be created in the test method — do not rely on org data (@isTest(SeeAllData=false) is the default). (3) HTTP callout tests require a mock implementation — use Test.setMock(HttpCalloutMock.class, mockImpl). Questions often say “a developer’s test class fails when calling an external API” — the answer is always to implement HttpCalloutMock.
Async Apex Selection — Which Method for Which Scenario
Use Future methods for simple one-off async operations (HTTP callouts from triggers, mixed DML). Use Batch Apex when processing more than 10,000 records (up to 50 million). Use Queueable Apex when you need chaining (one job triggers another) or need to pass complex objects between async contexts. Use Scheduled Apex for time-based execution. Exam tip: if the question says “millions of records” or “process in chunks” — the answer is Batch Apex. If it says “chain jobs” — Queueable.
Trigger Scenarios — Before vs After
When the question says “set a field value before the record is saved” — use a before trigger (changes to Trigger.new persist without a DML call). When the question says “create a related record after an account is created” — use an after trigger (the account Id exists after save). When the question says “prevent a record from being saved if a condition is not met” — use addError() in a before trigger. Never call a SOQL query in a trigger without first checking bulkification patterns.
Exam Strategy
PD1 questions often include realistic-looking Apex code snippets. Read code carefully — the “wrong answer” in the options often uses the right method name but in the wrong context (e.g., using a future method where a queueable is needed, or using DML before a callout). Passing score is 68% (41/60 questions). Aim for 78%+ on full mock exams — the additional buffer accounts for exam-day stress and unfamiliar question phrasing. Complete the official Trailhead PD1 Trailmix before booking.
Is the Salesforce Certified Platform Developer (PD1) Exam Hard?
DifficultyChallenging; plan about 8-16 weeks of focused prep.
Book When ReadyScore 85%+ on three timed mocks before scheduling.
Use Practice, Not DumpsOriginal practice questions build skill without risking your credential.
Exam format: 60 questions, 105 min, 68% passing score.
Get the Full PD1 Question Bank
Most candidates book the exam after scoring 75%+ on full mocks.
If you’re planning to test this quarter, aim to complete full mocks at least 10–14 days before your exam date.
Want to ensure you pass on your first try? Contact us for more information on our full 60-question mock exams and a personalized study plan. You can also reach out to km.krishnamohan25@gmail.com.
Request Mock Exams & Study PlanPD1 Study Resources
- PD1 Exam Tips (Summer '26) →Governor limits, bulkification, 75% coverage rule, and a mock-test benchmark to pass first attempt.
- PD1 vs PD2: Which Should You Take First? →Difficulty comparison, what changes between the two exams, and when you are ready for PD2.
- What comes after PD1? Platform Developer II →Advanced Apex, integrations, and design patterns. Requires PD1 certification.
- Full Salesforce Developer Certification Path →Step-by-step guide: PD1 → JavaScript Developer I → PD2 → Integration Architect.
Coming from the admin track? ADM-201 exam tips (Summer '26) covers the Salesforce fundamentals that overlap with PD1.
Salesforce Certified Platform Developer (PD1) Exam FAQs
- What is covered on the Salesforce Certified Platform Developer (PD1) exam?
- The Salesforce Certified Platform Developer (PD1) exam—formerly Salesforce Certified Platform Developer I— covers section-wise weightage as shown above. Use the exam topics and practice questions on this page to align your study with the official outline.
- What programming languages do I need to know for Platform Developer I?
- You need to know Apex (Salesforce's Java-like language) and JavaScript for Lightning Web Components. Experience with Java, C#, or similar object-oriented languages is helpful, but you can learn Apex through Trailhead and hands-on practice.