Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

You can change your Slack custom status from an iPhone or iPad with an Apple Shortcut that calls Slack’s Web API. The request uses a Slack user access token with the users.profile:write scope; it changes your status text and emoji, and can set an expiration. It does not change your Active/Away availability or pause notifications.

What the Shortcut changes—and what it doesn’t

Slack’s custom status is the message and optional emoji shown on your profile, such as “In a meeting” with a calendar emoji. You can also give that status an expiration. Slack treats this separately from your availability (Active or Away) and notification settings. The API request in this guide changes the custom status only; it does not set your availability or pause notifications. Slack’s status and availability guide explains the distinction and the manual mobile controls.

The dependable automated approach is to use Shortcuts’ Get Contents of URL action to send a JSON POST to Slack. This is an API-based Shortcut, not a screen-tapping imitation of Slack or a claim that every version of the Slack app exposes a native “Set Status” action. Apple documents using web requests in Shortcuts to connect apps and services when a built-in action is not available.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What you need

  • An iPhone or iPad with Apple’s Shortcuts app.
  • Access to the Slack workspace whose status you want to change.
  • Permission to create or authorize a Slack app in that workspace. Workspace or organization policy may restrict this.
  • A Slack OAuth user token with the users.profile:write scope. It must represent the user whose status will change.

Slack documents this method as requiring a user access token beginning with xoxp-. A bot token beginning with xoxb- is not the right credential for changing your personal status. Check Slack’s current users.profile.set API documentation for requirements and workspace restrictions.

#1 Best Overall
Apple iPhone 13, 128GB, Midnight - Unlocked (Renewed)
  • This pre-owned product is not Apple certified, but has been professionally inspected, tested and cleaned by Amazon-qualified suppliers.
  • There will be no visible cosmetic imperfections when held at an arm’s length.
  • This product is eligible for a replacement or refund within 90 days of receipt if you are not satisfied.
  • Product may come in generic Box.

Create or authorize a Slack app

  1. Open Slack’s API/app dashboard and create an app for the intended workspace, or select an existing app.
  2. Open OAuth & Permissions.
  3. Under User Token Scopes, add users.profile:write.
  4. Install or reinstall the app in the workspace so the new scope is authorized.
  5. Copy the app’s OAuth User Token. Confirm that it is a user token beginning with xoxp-, not a bot token.

Dashboard labels can change, and some workspaces require an administrator to install or approve apps. If you cannot authorize the app or the method is restricted for your role or organization, ask your Slack administrator or use Slack’s manual status editor. Do not assume every workspace has the same permissions.

Build a fixed-status Shortcut

Start with one status so you can verify the connection before adding menus or automation. In Shortcuts, create a new shortcut and add these actions:

  1. Dictionary: Create a nested dictionary with a top-level key named profile. Inside it, add status_text with the value In a meeting, status_emoji with the value :calendar:, and status_expiration with the value 0.
  2. URL: Enter https://slack.com/api/users.profile.set.
  3. Get Contents of URL: Set the method to POST. Add these headers:
    Authorization → Bearer YOUR_XOXP_USER_TOKEN
    Content-Type → application/json
    Set the request body to JSON and pass the Dictionary action’s result as the body.
  4. Get Dictionary Value: Read the key ok from the response.
  5. If: If ok is true, show a notification such as “Slack status updated.” Otherwise, get the response’s error value and display it so you can diagnose the failure.

The request body sent to Slack should have this shape:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
Apple iPhone 12, 64GB, Black - Unlocked (Renewed)
  • Fully unlocked and compatible with any carrier of choice (e.g. AT&T, T-Mobile, Sprint, Verizon, US-Cellular, Cricket, Metro, etc.).
  • Inspected and guaranteed to have minimal cosmetic damage, which is not noticeable when the device is held at arm's length.
  • Successfully passed a full diagnostic test which ensures like-new functionality and removal of any prior-user personal information.
  • The device does not come with headphones or a SIM card. It does include a charging cable that may be generic.
  • Tested for battery health and guaranteed to have a minimum battery capacity of 80%.
{
  "profile": {
    "status_text": "In a meeting",
    "status_emoji": ":calendar:",
    "status_expiration": 0
  }
}

Using Shortcuts’ Dictionary action is less error-prone than hand-typing JSON into a Text action, especially once you add variables. Apple’s guide covers the Get Contents of URL action, POST requests, and JSON request bodies.

Slack’s method accepts JSON and recommends it. status_text is limited to 100 characters. Emoji values can be workspace-enabled names such as :calendar:; availability can vary for custom emoji, so test the emoji in the target workspace. A standard Unicode emoji such as 📅 is another option.

Add a menu of statuses

Once the fixed request works, add a Choose from Menu action before it. Create options such as Focus time, In a meeting, Lunch, Traveling, Out of office, and Clear status. In each menu branch, set the status text, emoji, and expiration variables, then feed those values into the same nested Dictionary and request action.

Rank #3
Apple iPhone SE 2nd Generation, 64GB, White - Unlocked (Renewed)
  • This phone is unlocked and compatible with any carrier of choice on GSM and CDMA networks (e.g. AT&T, T-Mobile, Sprint, Verizon, US Cellular, Cricket, Metro, Tracfone, Mint Mobile, etc.).
  • Tested for battery health and guaranteed to have a minimum battery capacity of 80%.
  • Successfully passed a full diagnostic test which ensures like-new functionality and removal of any prior-user personal information.
  • The device does not come with headphones or a SIM card. It does include a generic (Mfi certified) charging cable.
  • Inspected and guaranteed to have minimal cosmetic damage, which is not noticeable when the device is held at arm's length.

For example, the Lunch branch could set status_text to Out to lunch, status_emoji to :fork_and_knife:, and expiration to 0. A Clear status branch should use empty strings for both fields:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
{
  "profile": {
    "status_text": "",
    "status_emoji": ""
  }
}

Slack documents empty status text and emoji as the way to clear a custom status. Keeping the menu values short also avoids the 100-character status-text limit.

Set an automatic expiration

The status_expiration field is a Unix timestamp in seconds. Slack clears the status when that time is reached. A value of 0, or leaving the field out, means the status does not expire.

Rank #4
Apple iPhone 14, 128GB, Midnight - Unlocked (Renewed)
  • This phone is unlocked and compatible with any carrier of choice on GSM and CDMA networks (e.g. AT&T, T-Mobile, Sprint, Verizon, US Cellular, Cricket, Metro, Tracfone, Mint Mobile, etc.).
  • Please check with your carrier to verify compatibility.
  • The device does not come with headphones or a SIM card. It does include a generic (Mfi certified) charging cable.
  • Tested for battery health and guaranteed to have a minimum battery capacity of 80%.

To expire a status after a duration such as one hour, build the timestamp dynamically in Shortcuts rather than hard-coding a date:

  1. Use Current Date.
  2. Use Adjust Date to add the desired number of minutes or hours.
  3. Format the adjusted date as a Unix timestamp in seconds using Shortcuts’ date-formatting options, then use that result for status_expiration.
  4. Test with a short interval, such as five minutes, and verify that the status clears at the expected time.

Do not use milliseconds: a timestamp in the wrong unit can make a status expire immediately or at an unintended time. Slack’s regular mobile editor also lets you choose when a status clears; scheduled statuses are a separate Slack interface feature.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Check the response and troubleshoot

Slack returns an ok field. Treat the call as successful only when that value is true; otherwise, display the returned error instead of a generic “done” message. During setup, showing the full response can help identify a scope, token, or permission problem. Error names below are examples, not a complete list.

Best Value
Sale
Apple iPhone SE 3rd Gen, 64GB, Midnight - Unlocked (Renewed)
  • 4.7-inch Retina HD display. 5G capable
  • Advanced single-camera system with 12MP Wide camera; Smart HDR 4, Photographic Styles, Portrait mode, and 4K video up to 60 fps
  • 7MP FaceTime HD camera with Smart HDR 4, Photographic Styles, Portrait mode, and 1080p video recording. Home button with Touch ID for secure authentication
  • A15 Bionic chip for lightning-fast performance. Durable design and IP67 water resistance
  • Up to 15 hours of video playback
Symptom or error What to check
invalid_auth or not_authed Confirm the token is present, current, and a user token. The header must be Authorization: Bearer ….
missing_scope Add the users.profile:write user-token scope and reinstall or reauthorize the app.
The request says it worked, but the status did not change Confirm the token belongs to the intended user and workspace, and that the JSON has the fields nested under profile.
Permission or restricted-action error The workspace, organization, or your role may block the change. Ask a Slack administrator.
Emoji is missing or wrong Try a standard Unicode emoji or an emoji enabled in that workspace.
Status clears immediately or at the wrong time Recalculate the expiration from the current date and make sure it is Unix time in seconds, not milliseconds.
It worked before but stopped The token may have been revoked or app authorization changed. Reauthorize the app and replace the stored token.
Repeated automation fails Reduce its frequency. Slack documents a limit of 10 profile updates per minute for one user profile.

Protect the token

This token authorizes changes to your Slack profile. Never publish it, include it in screenshots, or share a Shortcut that contains it. For a personal Shortcut, putting the token in a private action may be convenient, but it is not secure secret management. A shared Shortcut should contain no live credential and should prompt each person to provide their own token privately. If you expose a token, revoke it and reinstall or reauthorize the app as needed.

Optional: make it easier to launch

After testing, you can add the Shortcut to your Home Screen, a Shortcuts widget, or Siri, or use it in an automation that suits your workflow. Avoid high-frequency automations: Slack applies profile-update rate limits, and a status change should not run in a rapid loop.

When to use Slack’s own status editor

Use Slack directly if your workspace does not permit app authorization, you do not want to store a token on your device, or you need controls beyond custom status text and emoji. In Slack’s mobile app, tap your profile picture, tap the status field, enter a message and optional emoji, choose when it clears, then tap Done. Use Slack’s interface when you need to manage availability or notification settings as well.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Quick Recap

Bestseller No. 1
Apple iPhone 13, 128GB, Midnight - Unlocked (Renewed)
Apple iPhone 13, 128GB, Midnight - Unlocked (Renewed)
There will be no visible cosmetic imperfections when held at an arm’s length.; Product may come in generic Box.
$262.00
Bestseller No. 2
Apple iPhone 12, 64GB, Black - Unlocked (Renewed)
Apple iPhone 12, 64GB, Black - Unlocked (Renewed)
Tested for battery health and guaranteed to have a minimum battery capacity of 80%.
$188.94
Bestseller No. 3
Apple iPhone SE 2nd Generation, 64GB, White - Unlocked (Renewed)
Apple iPhone SE 2nd Generation, 64GB, White - Unlocked (Renewed)
Tested for battery health and guaranteed to have a minimum battery capacity of 80%.
$97.47
Bestseller No. 4
Apple iPhone 14, 128GB, Midnight - Unlocked (Renewed)
Apple iPhone 14, 128GB, Midnight - Unlocked (Renewed)
Please check with your carrier to verify compatibility.; Tested for battery health and guaranteed to have a minimum battery capacity of 80%.
$300.00
SaleBestseller No. 5
Apple iPhone SE 3rd Gen, 64GB, Midnight - Unlocked (Renewed)
Apple iPhone SE 3rd Gen, 64GB, Midnight - Unlocked (Renewed)
4.7-inch Retina HD display. 5G capable; A15 Bionic chip for lightning-fast performance. Durable design and IP67 water resistance
$124.49

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.