Bird
Raised Fist0
Firebasecloud~10 mins

Authentication trigger functions in Firebase - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Authentication trigger functions
User signs up
↓
Firebase detects auth event
↓
Trigger function runs
↓
Function executes custom code
↓
Optional: Modify user data or send notifications
↓
Function completes, auth process continues
When a user signs up, Firebase detects this event and runs a trigger function to execute custom code before continuing.
Execution Sample
Firebase
const functions = require('firebase-functions');

exports.onUserCreate = functions.auth.user().onCreate((user) => {
  console.log('New user:', user.email);
  return null;
});
This function runs when a new user signs up and logs their email.
Process Table
StepEvent DetectedTrigger Function ActionOutput/Effect
1User signs up with emailTrigger function onCreate startsLogs 'New user: user@example.com'
2Function completesReturns nullNo changes to user data
3Auth process continuesUser account createdUser can now use the app
💡 Trigger function ends after logging and returning null, allowing auth to complete
Status Tracker
VariableStartAfter Step 1After Step 2Final
user.emailundefineduser@example.comuser@example.comuser@example.com
function returnundefinedundefinednullnull
Key Moments - 2 Insights
Why does the trigger function run automatically when a user signs up?
Because Firebase listens for auth events and automatically calls the trigger function, as shown in execution_table step 1.
What happens if the trigger function does not return anything?
Returning null or a promise signals completion; without it, Firebase may wait indefinitely. See execution_table step 2.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is logged when a new user signs up?
A'New user: user@example.com'
B'User signed in'
C'Authentication failed'
D'User deleted'
💡 Hint
Check the Trigger Function Action column in step 1 of execution_table
At which step does the trigger function complete its execution?
AStep 1
BStep 3
CStep 2
DNever completes
💡 Hint
Look at the Function completes row in execution_table
If the trigger function modifies user data, when does this happen in the flow?
AAfter the function completes
BDuring the trigger function execution
CBefore the auth event is detected
DAfter the user logs out
💡 Hint
See concept_flow where custom code runs inside the trigger function
Concept Snapshot
Authentication trigger functions run automatically when users sign up.
They allow running custom code like logging or modifying user data.
Functions must return null or a promise to signal completion.
This happens before the auth process finishes.
Use onCreate for sign-up triggers.
Full Transcript
When a user signs up, Firebase detects this authentication event and automatically runs a trigger function. This function can execute custom code such as logging the user's email or modifying user data. The function must return null or a promise to indicate it has finished running. After the function completes, the authentication process continues and the user can access the app. This flow ensures you can add custom behavior during user authentication events without interrupting the normal sign-up process.

Practice

(1/5)
1. What does the Firebase Authentication trigger function onCreate do?
easy
A. It sends a password reset email.
B. It deletes a user from the database.
C. It runs automatically when a new user signs up.
D. It updates user profile information.

Solution

  1. Step 1: Understand the purpose of onCreate

    The onCreate trigger runs when a new user account is created in Firebase Authentication.
  2. Step 2: Match the trigger to the correct action

    Since it runs on new user sign-up, it does not delete users or send emails directly.
  3. Final Answer:

    It runs automatically when a new user signs up. -> Option C
  4. Quick Check:

    onCreate = New user signup trigger [OK]
Hint: Remember: onCreate = new user signup trigger [OK]
Common Mistakes:
  • Confusing onCreate with onDelete trigger
  • Thinking onCreate sends emails automatically
  • Assuming onCreate updates user data
2. Which of the following is the correct syntax to define a Firebase Authentication trigger function for user deletion in Node.js?
easy
A. functions.auth.user().onCreate((user) => { /* code */ });
B. exports.userDeleted = functions.auth.user().onDelete((user) => { /* code */ });
C. exports.userDeleted = functions.auth.user().onRemove((user) => { /* code */ });
D. functions.auth.user().delete((user) => { /* code */ });

Solution

  1. Step 1: Identify the correct trigger for user deletion

    The correct trigger for user deletion is onDelete attached to functions.auth.user().
  2. Step 2: Check the syntax for exporting the function

    The function should be exported using exports.functionName = ... syntax.
  3. Final Answer:

    exports.userDeleted = functions.auth.user().onDelete((user) => { /* code */ }); -> Option B
  4. Quick Check:

    onDelete trigger syntax = exports.userDeleted = functions.auth.user().onDelete((user) => { /* code */ }); [OK]
Hint: Use exports.functionName = functions.auth.user().onDelete(...) [OK]
Common Mistakes:
  • Using onCreate instead of onDelete for deletion
  • Using non-existent onRemove trigger
  • Not exporting the function properly
3. Given the following Firebase Authentication trigger function, what will be logged when a user signs up?
exports.welcomeUser = functions.auth.user().onCreate((user) => {
  console.log(`Welcome, ${user.email}!`);
});
medium
A. Welcome, undefined!
B. Welcome, user.email!
C. No output, function does not run on sign-up.
D. Welcome, user@example.com!

Solution

  1. Step 1: Understand the onCreate trigger behavior

    The function runs automatically when a new user signs up, receiving the user object with an email property.
  2. Step 2: Analyze the console.log statement

    The template string inserts the user's email, so it logs "Welcome, user@example.com!" if the user's email is user@example.com.
  3. Final Answer:

    Welcome, user@example.com! -> Option D
  4. Quick Check:

    onCreate logs user email correctly [OK]
Hint: onCreate passes user object with email property [OK]
Common Mistakes:
  • Assuming user.email is undefined
  • Thinking function does not run on sign-up
  • Misreading template string syntax
4. Identify the error in this Firebase Authentication trigger function code:
exports.deleteUserData = functions.auth.user().onDelete(user => {
  const uid = user.uid;
  admin.database().ref(`/users/${uid}`).remove();
});
medium
A. admin is not initialized or imported.
B. Incorrect trigger function; should use onCreate instead of onDelete.
C. Missing return statement for the database operation.
D. The user parameter should be destructured as { uid }.

Solution

  1. Step 1: Check for admin SDK initialization

    The code uses admin.database() but does not show admin being imported or initialized, which causes runtime errors.
  2. Step 2: Verify other parts of the code

    The trigger and user parameter usage are correct; missing return is not mandatory but recommended.
  3. Final Answer:

    admin is not initialized or imported. -> Option A
  4. Quick Check:

    admin SDK must be initialized before use [OK]
Hint: Always import and initialize admin SDK before database calls [OK]
Common Mistakes:
  • Confusing onDelete with onCreate trigger
  • Ignoring admin SDK initialization
  • Thinking return statement is mandatory
5. You want to send a welcome email only to users who sign up with an email ending in @example.com. Which code snippet correctly implements this using Firebase Authentication trigger functions?
hard
A. exports.sendWelcomeEmail = functions.auth.user().onCreate((user) => { if (user.email.endsWith('@example.com')) { sendEmail(user.email); } });
B. exports.sendWelcomeEmail = functions.auth.user().onDelete((user) => { if (user.email.includes('@example.com')) { sendEmail(user.email); } });
C. exports.sendWelcomeEmail = functions.auth.user().onCreate((user) => { if (user.email === '@example.com') { sendEmail(user.email); } });
D. exports.sendWelcomeEmail = functions.auth.user().onCreate((user) => { if (user.email.indexOf('@example.com') === 0) { sendEmail(user.email); } });

Solution

  1. Step 1: Choose the correct trigger for new user sign-up

    Use onCreate to run code when a user signs up, not onDelete.
  2. Step 2: Check the email condition for domain matching

    Use endsWith('@example.com') to check if the email ends with the domain. Using includes or equality check is incorrect here.
  3. Final Answer:

    exports.sendWelcomeEmail = functions.auth.user().onCreate((user) => { if (user.email.endsWith('@example.com')) { sendEmail(user.email); } }); -> Option A
  4. Quick Check:

    Use onCreate + endsWith() for domain check [OK]
Hint: Use onCreate and endsWith('@domain.com') to filter emails [OK]
Common Mistakes:
  • Using onDelete instead of onCreate
  • Checking email equality instead of endsWith
  • Using indexOf === 0 instead of endsWith
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard