I think you might have mixed up 2 hooks? The [Codex](https://codex.wordpress.org/Post_Status_Transitions) refers to the following hooks: 1. **{old_status}_to _{new_status} Hook** > An {old_status}_to_{new_status} action will execute when a post transitions from {old_status} to {new_status}. In your case: future_to_*publish* (future_to_*post* won't work because *post* isn't a status 2. **{status}_{post_type} Hook** > A {status}_{post_type} action will execute when a post of type {post_type} transitions to {status} from any other status. In your case: This would be publish_post (I think this may be where you got them mixed up?) I assume you only want future to publish transitions so try: add_action( 'future_to_publish', 'future_publish' );