Here some useful activation and update hooks.
<?php add_action( 'upgrader_process_complete', 'some_plugin_upgrade_completed', 10, 2 ); function some_plugin_upgrade_completed( $upgrader_object, $options ) { // The path to our plugin's main file $our_plugin = SOME_PLUGIN_BASENAME; // If an update has taken place and the updated type is plugins and the plugins element exists if( $options['action'] == 'update' && $options['type'] == 'plugin' && isset( $options['plugins'] ) ) { // Iterate through the plugins being updated and check if ours is there foreach( $options['plugins'] as $plugin ) { if( $plugin == $our_plugin ) { // Set a transient to record that our plugin has just been updated set_transient( 'some_plugin_updated', 1 ); } } } } add_action( 'admin_notices', 'some_plugin_display_update_notice' ); function some_plugin_display_update_notice() { // Check the transient to see if we've just updated the plugin if( get_transient( 'some_plugin_updated' ) ) { echo '<div class="notice notice-success">' . __( 'Thanks for updating', 'some_plugin' ) . '</div>'; some_plugin_db_sync(); //I like to do a db sync to ensure any updates to DB are done. This is usually the dbDelta function of the plugin. delete_transient( 'some_plugin_updated' ); } } add_action( 'admin_notices', 'some_plugin_display_install_notice' ); function some_plugin_display_install_notice() { // Check the transient to see if we've just activated the plugin if( get_transient( 'some_plugin_activated' ) ) { echo '<div class="notice notice-success">' . __( 'Thanks for installing', 'some_plugin' ) . '</div>'; // Delete the transient so we don't keep displaying the activation message delete_transient( 'some_plugin_activated' ); } } add_action( 'admin_notices', 'some_plugin_display_deactivate_notice' ); function some_plugin_display_deactivate_notice() { if (get_transient( 'some_plugin_deactivated' ) ) { echo '<div class="notice notice-success">' . __( 'Thanks for deactivating Some Plugin', 'some_plugin' ) . '</div>'; } delete_transient( 'some_plugin_deactivated' ); }