I use this macro which is really cool:
T0
M291 P"Press ""OK"" if you would you like to calibrate the Z-offset for this Tool Cartridge." R"Calibrate Z-Offset" S3
M291 P"Make sure your nozzle is free of debris. Press ""Cancel"" if you need to stop and clean the nozzle." R"Calibrate Z-Offset" S3
M291 P"Homing, please wait..." R"Calibrate Z-Offset" S1
M98 P/sys/homeall.g
M208 S1 Z-2 ; allow movement below Z0
G1 X100 Y10 Z8 F2000 ; move to center of bed
M558 P0
G30 S-2
M500 ; save results
M501 ; load new data
M208 S1 Z0 ; disallow movement below Z0
G1 Z25 ; drop build plate
M291 P"Z-offset calibration complete! " R"Calibrate Z-Offset" S1 T3