Trailblaze Prep
All CertificationsCertification PathBecome a CTASearchContact Us

Choose your role

Associate
Administrator
Developer
Consultant
Marketing
Architect
Accredited Professional
Salesforce Certified Advanced Field Service Accredited ProfessionalSalesforce Certified B2B Commerce Admin Accredited ProfessionalSalesforce Certified B2B Commerce Developer Accredited ProfessionalSalesforce Certified Communications Cloud Accredited ProfessionalSalesforce Certified Consumer Goods Cloud Accredited ProfessionalSalesforce Certified Consumer Goods Cloud Trade Promotion Management Accredited ProfessionalSalesforce Certified Contact Center Accredited ProfessionalSalesforce Certified CPQ and Billing Consultant Accredited ProfessionalSalesforce Certified Energy and Utilities Cloud Accredited ProfessionalSalesforce Certified Financial Services Cloud Accredited ProfessionalSalesforce Certified Health Cloud Accredited ProfessionalSalesforce Certified Heroku Developer Accredited ProfessionalSalesforce Certified Loyalty Management Accredited ProfessionalSalesforce Certified Manufacturing Cloud Accredited ProfessionalSalesforce Certified Marketing Cloud Advanced Cross Channel Accredited ProfessionalSalesforce Certified Marketing Cloud Intelligence Accredited ProfessionalSalesforce Certified Marketing Cloud Personalization Accredited ProfessionalSalesforce Certified Media Cloud Accredited ProfessionalSalesforce Certified Net Zero Cloud Accredited ProfessionalSalesforce Certified Order Management Administrator Accredited ProfessionalSalesforce Certified Order Management Developer Accredited ProfessionalSalesforce Certified Process Automation Accredited ProfessionalSalesforce Certified Public Sector Solutions Accredited Professional
Sales
Designer
Tableau
Associate
Administrator
Developer
Consultant
Marketing
Architect
Accredited Professional
Salesforce Certified Advanced Field Service Accredited ProfessionalSalesforce Certified B2B Commerce Admin Accredited ProfessionalSalesforce Certified B2B Commerce Developer Accredited ProfessionalSalesforce Certified Communications Cloud Accredited ProfessionalSalesforce Certified Consumer Goods Cloud Accredited ProfessionalSalesforce Certified Consumer Goods Cloud Trade Promotion Management Accredited ProfessionalSalesforce Certified Contact Center Accredited ProfessionalSalesforce Certified CPQ and Billing Consultant Accredited ProfessionalSalesforce Certified Energy and Utilities Cloud Accredited ProfessionalSalesforce Certified Financial Services Cloud Accredited ProfessionalSalesforce Certified Health Cloud Accredited ProfessionalSalesforce Certified Heroku Developer Accredited ProfessionalSalesforce Certified Loyalty Management Accredited ProfessionalSalesforce Certified Manufacturing Cloud Accredited ProfessionalSalesforce Certified Marketing Cloud Advanced Cross Channel Accredited ProfessionalSalesforce Certified Marketing Cloud Intelligence Accredited ProfessionalSalesforce Certified Marketing Cloud Personalization Accredited ProfessionalSalesforce Certified Media Cloud Accredited ProfessionalSalesforce Certified Net Zero Cloud Accredited ProfessionalSalesforce Certified Order Management Administrator Accredited ProfessionalSalesforce Certified Order Management Developer Accredited ProfessionalSalesforce Certified Process Automation Accredited ProfessionalSalesforce Certified Public Sector Solutions Accredited Professional
Sales
Designer
Tableau

Updated for Winter '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. Below you'll find exam weightage, study tips, and practice questions. 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 • ~65% passing score • Free practice

Get full PD1 question bank

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 I 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 I (PD1) exam through the official Salesforce certification portal.

Register for Exam
PD1
Intermediate

Salesforce PD1 Certification: Free Practice Exam & Study Guide (Winter '26)

The Platform Developer I certification validates your skills in developing custom applications on the Salesforce platform using Apex and Visualforce.

60
Questions
68%
Passing Score
110 min
Duration
$200
Exam Fee

Salesforce Certified Platform Developer I Exam Weightage by Section

Data Modeling and Management15%
Logic and Process Automation25%
User Interface25%
Testing, Debugging, and Deployment20%
Integration and APIs15%

Exam Topics

Apex FundamentalsData ModelingSOQL & SOSLDML OperationsTriggersVisualforceLightning ComponentsTestingDebug & DeploymentIntegration

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

Most Salesforce exams test scenario-based decisions. For Salesforce Certified Platform Developer I, focus on when to use each feature, not just terms.

  • Do timed question sets. Build pacing and confidence.
  • Review why wrong answers are wrong. It improves scenario reasoning.
  • Study high-weight topics first. Then close gaps.
  • Book the exam when your mock scores are steady.
Suggested study timeline for PD1 (6–10 weeks)
Is the PD1 Exam Hard?

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.trigger
trigger 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.cls
public 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 allowed
Database.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
@isTest
global 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
@isTest
private 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');
    }
}

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.

Exam Section Difficulty Heatmap

Which sections are a gimme vs which ones trap confident candidates. Use this to prioritise your final-week revision.

Exam SectionDifficultyStudy Tip
Data Modeling and ManagementModerateSOQL relationship queries (parent-to-child, child-to-parent) and relationship field naming conventions.
Logic and Process AutomationTrap ⚠SOQL/DML inside loops — every loop in a code snippet should trigger a governor limit check.
User InterfaceModerateLWC component lifecycle hooks (@wire, @api, @track) and when each is appropriate.
Testing, Debugging, and DeploymentHardSystem.assert() is required — coverage without assertions is meaningless. HttpCalloutMock for callout tests.
Integration and APIsHardREST vs SOAP, Named Credentials, and when to use each integration pattern in a scenario.

Difficulty based on analysis of common candidate errors across each exam section.

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.

Candidates who complete full mock exams report strong first-time pass rates. For pricing and access, use the contact form below or kindly reach out to km.krishnamohan25@gmail.com.

Get Full Question Bank

Next Certifications After Developer

After this certification, common next steps in the developer track:

PD1 Study Resources

Coming from the admin track? ADM-201 exam tips (Winter '26) covers the Salesforce fundamentals that overlap with PD1.

Salesforce Certified Platform Developer I (PD1) Exam FAQs

What is covered on the Salesforce Certified Platform Developer I (PD1) exam?
The Salesforce Certified Platform Developer I (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.
How much coding experience do I need for Platform Developer I?
While some programming experience is helpful, you can learn Apex and Lightning Web Components through Trailhead. The exam focuses on understanding when to use code vs declarative tools, governor limits, testing, and basic Apex/LWC concepts rather than advanced programming.
What is the PD1 passing score and exam format in Winter '26?
The Platform Developer I (PD1) exam has 60 multiple-choice questions, 110 minutes, and a passing score of 68% (41 correct). Salesforce may include 5 unscored pilot questions. The exam costs $200 USD (retake $100 USD) and is available online-proctored or at a test center.
What are the most common reasons candidates fail PD1?
Common failure points: (1) not knowing governor limits (SOQL 100/transaction, DML 150/transaction) and when they trigger, (2) writing DML or SOQL inside a for loop — the exam's most common trap, (3) misunderstanding the 75% code coverage rule and how Test.startTest()/stopTest() affect limit resets, and (4) confusing @AuraEnabled, @RestResource, and @InvocableMethod annotations.
How long should I study for PD1 and what mock score means I am ready?
Most candidates with some object-oriented programming background need 4–6 weeks. Target benchmark: score 78%+ on three timed full mocks (60 Q / 110 min), taken one week apart. The actual passing threshold is 68%, but the extra buffer accounts for exam nerves and unfamiliar phrasing on the day.
What is the bulkification pattern in Apex and why does PD1 test it heavily?
Bulkification is the practice of writing Apex that processes records in collections (Lists and Maps) rather than one record at a time. The pattern: query all needed records BEFORE loops using a Map keyed by Id, collect changes INSIDE loops into a List, then perform a single DML call AFTER the loop. PD1 tests this heavily because SOQL or DML inside a for loop is the most common governor limit violation in real Salesforce orgs. The exam typically shows code with a loop containing a query or insert and asks candidates to identify the problem or rewrite the code correctly.
What is the difference between a Future method and a Queueable class in Salesforce?
@Future methods are the simplest form of async Apex — they run in a separate transaction, support HTTP callouts (when callout=true), and resolve mixed DML errors. Limitations: cannot be chained, cannot pass sObjects directly, limited monitoring. Queueable Apex (implements Queueable) is more powerful: it can be chained (job enqueues another job), can pass complex objects, and provides a Job ID for monitoring via AsyncApexJob. PD1 exam rule: if the question involves chaining async jobs or monitoring job completion, the answer is Queueable. If it's a simple callout from a trigger, Future method is often acceptable.
What are the most important Apex annotations PD1 candidates must know?
@isTest — marks a class or method as a test class (does not count toward code coverage). @TestVisible — exposes private methods/variables to test classes without changing access modifiers. @AuraEnabled — exposes an Apex method to Lightning components (LWC and Aura). @InvocableMethod — exposes an Apex method as an action in Flow. @RemoteAction — exposes methods to Visualforce pages via JavaScript remoting. @RestResource / @HttpGet / @HttpPost — creates REST API endpoints in Apex. The PD1 exam frequently presents a scenario and asks which annotation to add.
What is the difference between SOQL and SOSL and when should each be used?
SOQL (Salesforce Object Query Language) queries a specific object and its related objects: SELECT Id, Name FROM Account WHERE CreatedDate = TODAY. Use SOQL when you know the object and want records matching specific criteria. SOSL (Salesforce Object Search Language) searches across multiple objects simultaneously using text search: FIND 'Smith' IN ALL FIELDS RETURNING Account, Contact, Lead. Use SOSL when you need to search across multiple objects for a text string — for example, building a search feature that returns results from any object. PD1 tip: if a scenario says "search across multiple objects for a keyword," the answer is SOSL, not SOQL.
How does Salesforce's security model relate to PD1 Apex development?
PD1 tests "with sharing" vs "without sharing" class declarations: "with sharing" enforces the running user's sharing rules and OWD (recommended for most cases); "without sharing" bypasses sharing and runs with system-level access. If a class doesn't specify sharing, it inherits from the calling class. PD1 also tests CRUD/FLS enforcement — Apex does not automatically enforce field-level security or CRUD permissions (unlike Visualforce or LWC). Developers must explicitly check Schema.DescribeFieldResult or use Security.stripInaccessible() to enforce FLS. This is a common exam differentiator.
Are there free practice questions for the Salesforce Certified Platform Developer I (PD1) exam?
Yes. This page includes 15 free sample practice questions with explanations. Use them to test your knowledge before booking the exam.
How do I prepare for the Salesforce Certified Platform Developer I (PD1) certification?
Use the exam tips, prerequisites, and study strategy on this Salesforce Certified Platform Developer I (PD1) study guide—formerly Salesforce Certified Platform Developer I— Focus first on the highest-weighted sections, then take the sample practice questions. Schedule the exam when you consistently score well on practice tests.
Where can I find the official exam outline for Salesforce Certified Platform Developer I (PD1)?
Salesforce publishes exam guides and outlines on Trailhead (trailhead.salesforce.com). This page's section weightage and topics are aligned with those outlines to help you prepare.