Skip to main content

Custom Redirects

Custom Redirects lets you control where users go after signing in with Google. Instead of the default WooCommerce My Account page, send users to any URL on your site.

PRO Feature

Custom Redirects is a PRO feature. Upgrade to PRO to unlock this functionality.

Default Behavior (FREE)

Without custom redirects:

  • Users stay on the same page after One Tap
  • Button redirects to WooCommerce My Account
  • No customization available

With Custom Redirects (PRO)

You can:

  • Set a global redirect URL
  • Configure role-based redirects
  • Use dynamic placeholders
  • Preserve referrer URL

Configuration

Accessing Settings

  1. Go to Settings > OneTap Login
  2. Click Users tab
  3. Find Redirect Settings section

Global Redirect URL

Field: Post-login redirect URL

Enter a URL where all users should go after login:

https://yoursite.com/welcome/

Options:

ValueResult
EmptyDefault behavior (My Account)
Absolute URLExact destination
Relative pathAppended to site URL

Examples:

# Absolute URL
https://yoursite.com/members/dashboard/

# Relative path
/dashboard/

# With parameters
/welcome/?new_user=1

Role-Based Redirects

Send different users to different destinations based on their role.

Configuration:

RoleRedirect URL
Customer/shop/
Subscriber/members/
Contributor/wp-admin/edit.php
Author/wp-admin/

How it works:

  1. User signs in with Google
  2. Plugin checks user's role
  3. Matches role to redirect URL
  4. Redirects to appropriate destination

Priority Order

Redirects are processed in this order:

1. Role-specific redirect (if configured)
2. Global redirect URL (if configured)
3. Referrer URL (if "preserve referrer" enabled)
4. Default (WooCommerce My Account or wp-admin)

Dynamic Placeholders

Use placeholders for dynamic URLs:

PlaceholderReplaced With
{user_id}WordPress user ID
{user_email}User's email
{role}User's role slug
{referrer}Previous page URL

Examples:

# User-specific dashboard
/dashboard/?user={user_id}

# Role-based area
/portal/{role}/

# Preserve where they came from
{referrer}

Preserve Referrer

Setting: Preserve referrer URL

When enabled:

  • Tracks the page user was on before login
  • Redirects back to that page after login
  • Useful for checkout/cart flows

How it works:

1. User on /product/widget/
2. Clicks Google sign-in
3. Completes authentication
4. Redirected back to /product/widget/

Referrer Exceptions

Some pages are excluded from referrer preservation:

  • Login pages (/my-account/, wp-login.php)
  • Admin pages (/wp-admin/)
  • REST API endpoints

Use Cases

E-commerce Welcome Flow

Global redirect: /welcome/
Role redirect (customer): (empty, uses global)

All new customers see welcome page with:

  • Account setup tips
  • First-purchase discount
  • Product recommendations

Membership Site Dashboard

Global redirect: /members/dashboard/
Role redirect (subscriber): /members/content/
Role redirect (premium): /members/premium/

Different membership tiers go to appropriate areas.

B2B Portal

Role redirect (customer): /portal/buyer/
Role redirect (editor): /portal/manager/
Role redirect (contributor): /portal/viewer/

Company roles map to portal sections.

Checkout Preservation

Preserve referrer: Enabled

Users signing in from checkout return to checkout.

Post-Purchase Onboarding

Global redirect: /onboarding/step-1/

After purchase and login, guide through setup.

Technical Details

Redirect Timing

Redirects happen:

  • After successful authentication
  • After WordPress session created
  • After any welcome email sent

Redirect Method

The plugin uses:

wp_safe_redirect($url);
exit;

Only local URLs are allowed (security).

External Redirects

External URLs are not allowed for security:

❌ https://external-site.com/
✅ https://yoursite.com/page/

Hooks for Developers

Filter Redirect URL

add_filter('onetap_login_redirect_url', function($url, $user, $request) {
// Custom logic
if ($user->has_cap('premium_member')) {
return '/premium/dashboard/';
}
return $url;
}, 10, 3);

Filter by Login Method

add_filter('onetap_login_redirect_url', function($url, $user, $request) {
// Different redirect for One Tap vs Button
$method = $request['login_method'] ?? 'button';

if ($method === 'one_tap') {
return $url; // Stay on page for One Tap
}

return '/welcome/'; // Redirect for button
}, 10, 3);

Common Configurations

New User vs Returning User

add_filter('onetap_login_redirect_url', function($url, $user, $request) {
$is_new = get_user_meta($user->ID, '_onetap_login_count', true) <= 1;

if ($is_new) {
return '/welcome/';
}

return '/my-account/';
}, 10, 3);

WooCommerce Cart Redirect

add_filter('onetap_login_redirect_url', function($url, $user, $request) {
// If cart has items, go to checkout
if (WC()->cart && !WC()->cart->is_empty()) {
return wc_get_checkout_url();
}

return $url;
}, 10, 3);

Troubleshooting

Redirect Not Working

Possible causes:

  1. URL not saved in settings
  2. Another plugin overriding
  3. Cache showing old behavior

Solutions:

  1. Verify URL in settings
  2. Check for redirect conflicts
  3. Clear all caches
  4. Test in incognito

Wrong Destination

Possible causes:

  1. Role-based redirect overriding global
  2. Preserve referrer overriding
  3. Filter hook modifying

Solutions:

  1. Check role configuration
  2. Disable preserve referrer temporarily
  3. Check for custom code

External Site Redirect Blocked

Cause: Security feature prevents external redirects.

Solution: External redirects are intentionally blocked. Use hooks if you must redirect externally (not recommended).

Settings Summary

SettingTypeDefaultDescription
Global redirectURL(empty)Default destination
Role redirectsURL per role(empty)Role-specific destinations
Preserve referrerCheckboxOffReturn to previous page

Next Steps